This is an automated email from the ASF dual-hosted git repository. ccollins pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mynewt-core.git
commit 21dde7d715f8e0f2b339003c0f477d5b3eab45e4 Author: Christopher Collins <ccoll...@apache.org> AuthorDate: Tue Oct 2 18:39:40 2018 -0700 test/runtest: Null-terminate segments of log entry Overly long segments (test case name, suite name, and message) were not being null-terminated. This caused malformed JSON to be included in the log. --- test/runtest/src/runtest.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/test/runtest/src/runtest.c b/test/runtest/src/runtest.c index 29b677e..3a19808 100644 --- a/test/runtest/src/runtest.c +++ b/test/runtest/src/runtest.c @@ -165,8 +165,10 @@ runtest_log_result(const char *msg, bool passed) int m_len; int len; - /* str length of {"k":"","n":"","s":"","m":"","r":1}<token> */ - len = 35 + strlen(runtest_token); + /* str length of {"k":"","n":"","s":"","m":"","r":1}<token> plus three + * null-terminators. + */ + len = 38 + strlen(runtest_token); /* How much of the test name can we log? */ n_len = strlen(tu_case_name); @@ -175,7 +177,8 @@ runtest_log_result(const char *msg, bool passed) } len += n_len; n = buf; - strncpy(n, tu_case_name, n_len + 1); + strncpy(n, tu_case_name, n_len); + n[n_len] = '\0'; /* How much of the suite name can we log? */ s_len = strlen(runtest_current_ts->ts_name); @@ -184,7 +187,8 @@ runtest_log_result(const char *msg, bool passed) } len += s_len; s = n + n_len + 2; - strncpy(s, runtest_current_ts->ts_name, s_len + 1); + strncpy(s, runtest_current_ts->ts_name, s_len); + s[s_len] = '\0'; /* How much of the message can we log? */ m_len = strlen(msg); @@ -192,7 +196,8 @@ runtest_log_result(const char *msg, bool passed) m_len = LOG_PRINTF_MAX_ENTRY_LEN - len - 1; } m = s + s_len + 2; - strncpy(m, msg, m_len + 1); + strncpy(m, msg, m_len); + m[m_len] = '\0'; /* XXX Hack to allow the idle task to run and update the timestamp. */ os_time_delay(1);