diff options
author | Petr Štetiar <ynezz@true.cz> | 2020-01-18 20:32:55 +0300 |
---|---|---|
committer | Petr Štetiar <ynezz@true.cz> | 2020-01-20 18:54:10 +0300 |
commit | 5c0faaf4f5e26180dcc31b7e8558d57426d84085 (patch) | |
tree | 332940834d2e8ec9a8e9ac219db908d9188b2834 /tests/test-blobmsg-parse.c | |
parent | 1ffa41535369f5bb67d1eb5bdcb306671ca1d2e4 (diff) |
tests: prefer dynamically allocated buffers
Help detecting Valgrind OOB reads and other issues.
Conditional jump or move depends on uninitialised value(s)
at 0x5452886: blobmsg_parse (blobmsg.c:203)
by 0x400A8E: test_blobmsg (tests/test-blobmsg-parse.c:66)
by 0x400A8E: main (tests/test-blobmsg-parse.c:82)
Conditional jump or move depends on uninitialised value(s)
at 0x545247F: blobmsg_check_name (blobmsg.c:39)
by 0x545247F: blobmsg_check_attr_len (blobmsg.c:79)
by 0x5452710: blobmsg_parse_array (blobmsg.c:159)
by 0x400AB8: test_blobmsg (tests/test-blobmsg-parse.c:69)
by 0x400AB8: main (tests/test-blobmsg-parse.c:82)
Conditional jump or move depends on uninitialised value(s)
at 0x54524A0: blobmsg_check_name (blobmsg.c:42)
by 0x54524A0: blobmsg_check_attr_len (blobmsg.c:79)
by 0x5452710: blobmsg_parse_array (blobmsg.c:159)
by 0x400AB8: test_blobmsg (tests/test-blobmsg-parse.c:69)
by 0x400AB8: main (tests/test-blobmsg-parse.c:82)
Ref: http://lists.infradead.org/pipermail/openwrt-devel/2020-January/021204.html
Signed-off-by: Petr Štetiar <ynezz@true.cz>
Diffstat (limited to 'tests/test-blobmsg-parse.c')
-rw-r--r-- | tests/test-blobmsg-parse.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/tests/test-blobmsg-parse.c b/tests/test-blobmsg-parse.c index ca710fd..b2844f3 100644 --- a/tests/test-blobmsg-parse.c +++ b/tests/test-blobmsg-parse.c @@ -40,18 +40,22 @@ static void test_blobmsg(const char *filename) { #define BUF_LEN 256 int r = 0; - FILE *fd = NULL; size_t len = 0; - char buf[BUF_LEN+1] = { 0 }; + FILE *fd = NULL; + char *buf = NULL; struct blob_attr *tb[__FOO_MAX]; fd = fopen(filename, "r"); if (!fd) { - fprintf(stderr, "unable to open %s", filename); + fprintf(stderr, "unable to open %s\n", filename); return; } - len = fread(&buf, 1, BUF_LEN, fd); + buf = malloc(BUF_LEN+1); + if (!buf) + return; + + len = fread(buf, 1, BUF_LEN, fd); fclose(fd); r = blobmsg_parse(foo_policy, ARRAY_SIZE(foo_policy), tb, buf, len); @@ -59,6 +63,8 @@ static void test_blobmsg(const char *filename) r = blobmsg_parse_array(foo_policy, ARRAY_SIZE(foo_policy), tb, buf, len); dump_result("blobmsg_parse_array", r, filename, tb); + + free(buf); } int main(int argc, char *argv[]) |