]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
test: Detect when expect_str is too small
authorSimon Glass <sjg@chromium.org>
Sat, 8 May 2021 12:59:57 +0000 (06:59 -0600)
committerTom Rini <trini@konsulko.com>
Tue, 8 Jun 2021 15:39:09 +0000 (11:39 -0400)
If a line of more than 256 bytes is generated, the test will fail but the
reason is not clear. Add a check for this condition and print a helpful
message.

Signed-off-by: Simon Glass <sjg@chromium.org>
test/ut.c

index a0fe5facac7a20dff53be360b4d69d3820306921..350509a2926c4c2e34452b2260a0f513d78e4b89 100644 (file)
--- a/test/ut.c
+++ b/test/ut.c
@@ -68,11 +68,17 @@ static int readline_check(struct unit_test_state *uts)
 int ut_check_console_line(struct unit_test_state *uts, const char *fmt, ...)
 {
        va_list args;
+       int len;
        int ret;
 
        va_start(args, fmt);
-       vsnprintf(uts->expect_str, sizeof(uts->expect_str), fmt, args);
+       len = vsnprintf(uts->expect_str, sizeof(uts->expect_str), fmt, args);
        va_end(args);
+       if (len >= sizeof(uts->expect_str)) {
+               ut_fail(uts, __FILE__, __LINE__, __func__,
+                       "unit_test_state->expect_str too small");
+               return -EOVERFLOW;
+       }
        ret = readline_check(uts);
        if (ret < 0)
                return ret;
@@ -83,11 +89,17 @@ int ut_check_console_line(struct unit_test_state *uts, const char *fmt, ...)
 int ut_check_console_linen(struct unit_test_state *uts, const char *fmt, ...)
 {
        va_list args;
+       int len;
        int ret;
 
        va_start(args, fmt);
-       vsnprintf(uts->expect_str, sizeof(uts->expect_str), fmt, args);
+       len = vsnprintf(uts->expect_str, sizeof(uts->expect_str), fmt, args);
        va_end(args);
+       if (len >= sizeof(uts->expect_str)) {
+               ut_fail(uts, __FILE__, __LINE__, __func__,
+                       "unit_test_state->expect_str too small");
+               return -EOVERFLOW;
+       }
        ret = readline_check(uts);
        if (ret < 0)
                return ret;