diff --git a/lib/roken/parse_time-test.c b/lib/roken/parse_time-test.c index e2fcf3ac1..5f6170766 100644 --- a/lib/roken/parse_time-test.c +++ b/lib/roken/parse_time-test.c @@ -54,31 +54,32 @@ int main(int argc, char **argv) { size_t sz; + size_t buf_sz; int i, j; for (i = 0; i < sizeof(tests)/sizeof(tests[0]); ++i) { char *buf; - for (j = 1; j < tests[i].size + 2; j++) { + for (buf_sz = 0; buf_sz < tests[i].size + 2; buf_sz++) { buf = rk_test_mem_alloc(RK_TM_OVERRUN, "overrun", - NULL, j); - sz = unparse_time(tests[i].val, buf, j); + NULL, buf_sz); + sz = unparse_time(tests[i].val, buf, buf_sz); if (sz != tests[i].size) errx(1, "sz (%lu) != tests[%d].size (%lu)", - (unsigned long)sz, i, + (unsigned long)buf_sz, i, (unsigned long)tests[i].size); - if (strncmp(buf, tests[i].str, j - 1) != 0) + if (buf_sz > 0 && memcmp(buf, tests[i].str, buf_sz - 1) != 0) errx(1, "test %i wrong result %s vs %s", i, buf, tests[i].str); rk_test_mem_free("overrun"); buf = rk_test_mem_alloc(RK_TM_UNDERRUN, "underrun", NULL, tests[i].size); - sz = unparse_time(tests[i].val, buf, j); + sz = unparse_time(tests[i].val, buf, buf_sz); if (sz != tests[i].size) errx(1, "sz (%lu) != tests[%d].size (%lu)", (unsigned long)sz, i, (unsigned long)tests[i].size); - if (strncmp(buf, tests[i].str, j - 1) != 0) + if (buf_sz > 0 && strncmp(buf, tests[i].str, buf_sz - 1) != 0) errx(1, "test %i wrong result %s vs %s", i, buf, tests[i].str); rk_test_mem_free("underrun"); }