mirror of
https://github.com/apache/nuttx-apps.git
synced 2026-08-02 12:49:03 +00:00
For EINVAL, it doesn't make sense to keep parsing.
(For E2BIG, it might make some sense.)
Found by LLVM ASan.
```
=================================================================
==81622==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x6020000000f2 at pc 0x00010d2746ca bp 0x7ffee29a9980 sp 0x7ffee29a9978
READ of size 1 at 0x6020000000f2 thread T0
#0 0x10d2746c9 in netlib_parseurl netlib_parseurl.c:121
#1 0x10d26b293 in parseurl webclient.c:479
#2 0x10d265e48 in webclient_perform webclient.c:690
#3 0x10d277c5b in main main.c:210
#4 0x7fff7a06f3d4 in start+0x0 (libdyld.dylib:x86_64+0x163d4)
0x6020000000f2 is located 0 bytes to the right of 2-byte region [0x6020000000f0,0x6020000000f2)
allocated by thread T0 here:
#0 0x10d3996d3 in wrap_strdup+0x203 (libclang_rt.asan_osx_dynamic.dylib:x86_64+0x3e6d3)
#1 0x10d276abe in main main.c:147
#2 0x7fff7a06f3d4 in start+0x0 (libdyld.dylib:x86_64+0x163d4)
SUMMARY: AddressSanitizer: heap-buffer-overflow netlib_parseurl.c:121 in netlib_parseurl
Shadow bytes around the buggy address:
0x1c03ffffffc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x1c03ffffffd0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x1c03ffffffe0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x1c03fffffff0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x1c0400000000: fa fa fd fd fa fa fd fd fa fa 00 00 fa fa 00 00
=>0x1c0400000010: fa fa 00 fa fa fa 00 00 fa fa 00 06 fa fa[02]fa
0x1c0400000020: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x1c0400000030: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x1c0400000040: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x1c0400000050: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x1c0400000060: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
Addressable: 00
Partially addressable: 01 02 03 04 05 06 07
Heap left redzone: fa
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack after return: f5
Stack use after scope: f8
Global redzone: f9
Global init order: f6
Poisoned by user: f7
Container overflow: fc
Array cookie: ac
Intra object redzone: bb
ASan internal: fe
Left alloca redzone: ca
Right alloca redzone: cb
Shadow gap: cc
==81622==ABORTING
```
|
||
|---|---|---|
| .. | ||
| Kconfig | ||
| Make.defs | ||
| Makefile | ||
| netlib_autoconfig.c | ||
| netlib_delarp.c | ||
| netlib_eaddrconv.c | ||
| netlib_ethaddrconv.c | ||
| netlib_getarp.c | ||
| netlib_getarptab.c | ||
| netlib_getdevs.c | ||
| netlib_getdripv4addr.c | ||
| netlib_getessid.c | ||
| netlib_getifstatus.c | ||
| netlib_getipv4addr.c | ||
| netlib_getipv4netmask.c | ||
| netlib_getipv6addr.c | ||
| netlib_getmacaddr.c | ||
| netlib_getnbtab.c | ||
| netlib_getnodeaddr.c | ||
| netlib_getpanid.c | ||
| netlib_getproperties.c | ||
| netlib_getroute.c | ||
| netlib_ipmsfilter.c | ||
| netlib_ipv4adaptor.c | ||
| netlib_ipv4addrconv.c | ||
| netlib_ipv4route.c | ||
| netlib_ipv4router.c | ||
| netlib_ipv6adaptor.c | ||
| netlib_ipv6netmask2prefix.c | ||
| netlib_ipv6route.c | ||
| netlib_ipv6router.c | ||
| netlib_listenon.c | ||
| netlib_nodeaddrconv.c | ||
| netlib_parsehttpurl.c | ||
| netlib_parseurl.c | ||
| netlib_prefix2ipv6netmask.c | ||
| netlib_saddrconv.c | ||
| netlib_server.c | ||
| netlib_setarp.c | ||
| netlib_setdripv4addr.c | ||
| netlib_setdripv6addr.c | ||
| netlib_seteaddr.c | ||
| netlib_setessid.c | ||
| netlib_setifstatus.c | ||
| netlib_setipv4addr.c | ||
| netlib_setipv4dnsaddr.c | ||
| netlib_setipv4netmask.c | ||
| netlib_setipv6addr.c | ||
| netlib_setipv6netmask.c | ||
| netlib_setmacaddr.c | ||
| netlib_setnodeaddr.c | ||