diff options
author | Petr Štetiar <ynezz@true.cz> | 2020-10-03 01:29:21 +0200 |
---|---|---|
committer | Petr Štetiar <ynezz@true.cz> | 2020-10-03 09:20:48 +0200 |
commit | a3e650911f5e6f67dcff09974df3775dfd615da6 (patch) | |
tree | 5f362b3b341242c5120922efc7ecb9d9e6815de8 | |
parent | 9bd361ca323637b047ecfdf5de3c8cfbf64698d6 (diff) | |
download | uci-a3e650911f5e6f67dcff09974df3775dfd615da6.tar.gz |
file: uci_parse_package: fix heap use after free
Fixes following issue which is caused by usage of pointer which pointed
to a reallocated address:
ERROR: AddressSanitizer: heap-use-after-free on address 0x619000000087 at pc 0x000000509aa7 bp 0x7ffd6b9c3c40 sp 0x7ffd6b9c3400
READ of size 2 at 0x619000000087 thread T0
#0 0x509aa6 in strdup (test-fuzz+0x509aa6)
#1 0x7fc36d2a1636 in uci_strdup util.c:60:8
#2 0x7fc36d29e1ac in uci_alloc_generic list.c:55:13
#3 0x7fc36d29e241 in uci_alloc_package list.c:253:6
#4 0x7fc36d2a0ba3 in uci_switch_config file.c:375:18
#5 0x7fc36d2a09b8 in uci_parse_package file.c:397:2
#6 0x7fc36d2a09b8 in uci_parse_line file.c:513:6
#7 0x7fc36d2a09b8 in uci_import file.c:681:4
0x619000000087 is located 7 bytes inside of 1024-byte region [0x619000000080,0x619000000480)
freed by thread T0 here:
#0 0x51daa9 in realloc (test-fuzz+0x51daa9)
#1 0x7fc36d2a1612 in uci_realloc util.c:49:8
previously allocated by thread T0 here:
#0 0x51daa9 in realloc (test-fuzz+0x51daa9)
#1 0x7fc36d2a1612 in uci_realloc util.c:49:8
Reported-by: Jeremy Galindo <jgalindo@datto.com>
Signed-off-by: Petr Štetiar <ynezz@true.cz>
-rw-r--r-- | file.c | 2 | ||||
-rw-r--r-- | tests/fuzz/corpus/id-000000,sig-06,src-000079,time-22005942,op-ext_AO,pos-8 | bin | 0 -> 56 bytes |
2 files changed, 1 insertions, 1 deletions
@@ -388,8 +388,8 @@ static void uci_parse_package(struct uci_context *ctx, bool single) pctx->pos += strlen(pctx_cur_str(pctx)) + 1; ofs_name = next_arg(ctx, true, true, true); - name = pctx_str(pctx, ofs_name); assert_eol(ctx); + name = pctx_str(pctx, ofs_name); if (single) return; diff --git a/tests/fuzz/corpus/id-000000,sig-06,src-000079,time-22005942,op-ext_AO,pos-8 b/tests/fuzz/corpus/id-000000,sig-06,src-000079,time-22005942,op-ext_AO,pos-8 Binary files differnew file mode 100644 index 0000000..dc92b9d --- /dev/null +++ b/tests/fuzz/corpus/id-000000,sig-06,src-000079,time-22005942,op-ext_AO,pos-8 |