From: Yu Watanabe Date: Thu, 7 Jul 2022 09:27:02 +0000 (+0900) Subject: time-util: fix buffer-over-run X-Git-Tag: v252-rc1~700 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9102c625a673a3246d7e73d8737f3494446bad4e;p=thirdparty%2Fsystemd.git time-util: fix buffer-over-run Fixes #23928. --- diff --git a/src/basic/time-util.c b/src/basic/time-util.c index abbc4ad5cd7..26d59de1234 100644 --- a/src/basic/time-util.c +++ b/src/basic/time-util.c @@ -591,7 +591,7 @@ char *format_timespan(char *buf, size_t l, usec_t t, usec_t accuracy) { t = b; } - n = MIN((size_t) k, l); + n = MIN((size_t) k, l-1); l -= n; p += n; diff --git a/src/test/test-time-util.c b/src/test/test-time-util.c index e8e4e2a67bb..58c5fa9be40 100644 --- a/src/test/test-time-util.c +++ b/src/test/test-time-util.c @@ -238,6 +238,11 @@ TEST(format_timespan) { test_format_timespan_accuracy(1); test_format_timespan_accuracy(USEC_PER_MSEC); test_format_timespan_accuracy(USEC_PER_SEC); + + /* See issue #23928. */ + _cleanup_free_ char *buf; + assert_se(buf = new(char, 5)); + assert_se(buf == format_timespan(buf, 5, 100005, 1000)); } TEST(verify_timezone) {