mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
6fb340d654
19057: fuzzing: Add uri_parser setup r=benpicco a=Teufelchen1 Hello! ### Contribution description This PR is a replacement for PR #18802 In this contribution: * The variable `AFL_FLAGS` is renamed to `FLAGS_FOR_AFL` because AFL is always complaining that `AFL_FLAGS` is not a valid env var for it. While this is not a bug nor an issue, I found it to be annoying. * A generic input reader is added to simplify building a test harness * The usage of this reader is demonstrated by adding a harness for fuzzing the uri_parser (needs squashing after review) ### Testing procedure Go to `fuzzing/uri_parser` and run `make all-asan` and `make fuzz` to get some action going. Also mildly interesting: `./dist/tools/compile_test/compile_like_murdock.py -b native -a fuzzing/uri_parser` ### Issues/PRs references The original PR #18802 is replaced because the generic input reader is present in both PRs but this PoC harness is much simpler. 19151: examples/gcoap: Fix shell parameter validation r=benpicco a=maribu ### Contribution description Executing the shell command with an URI-Path that doesn't start with a slash results in an assertion error while composing the client side message. This is suboptimal user experience, so add an explicit check for a valid URI-Path and a dedicated error message. ### Testing procedure #### In `master` ``` $ make BOARD=microbit-v2 -C examples/gcoap flash term [...] 2023-01-15 22:23:32,512 # coap get [::1] /.well-known/core 2023-01-15 22:23:32,516 # gcoap_cli: sending msg ID 52272, 23 bytes 2023-01-15 22:23:32,520 # gcoap: response Success, code 2.05, 46 bytes 2023-01-15 22:23:32,524 # </cli/stats>;ct=0;rt="count";obs,</riot/board> > coap get [::1] foo 2023-01-15 22:23:34,763 # coap get [::1] foo 2023-01-15 22:23:34,763 # 2329 2023-01-15 22:23:34,765 # *** RIOT kernel panic: 2023-01-15 22:23:34,767 # FAILED ASSERTION. 2023-01-15 22:23:34,767 # 2023-01-15 22:23:34,775 # pid | name | state Q | pri | stack ( used) ( free) | base addr | current 2023-01-15 22:23:34,784 # - | isr_stack | - - | - | 512 ( 200) ( 312) | 0x20000000 | 0x200001c8 2023-01-15 22:23:34,793 # 1 | main | running Q | 7 | 1536 ( 1072) ( 464) | 0x200006c0 | 0x2000095c 2023-01-15 22:23:34,802 # 2 | 6lo | bl rx _ | 3 | 1024 ( 328) ( 696) | 0x200036c0 | 0x200039c4 2023-01-15 22:23:34,810 # 3 | ipv6 | bl rx _ | 4 | 1024 ( 460) ( 564) | 0x20001294 | 0x20001574 2023-01-15 22:23:34,819 # 4 | udp | bl rx _ | 5 | 512 ( 300) ( 212) | 0x20003e98 | 0x20003f9c 2023-01-15 22:23:34,828 # 5 | coap | bl anyfl _ | 6 | 1112 ( 704) ( 408) | 0x20000e38 | 0x200011c4 2023-01-15 22:23:34,837 # 6 | nrf802154 | bl anyfl _ | 2 | 896 ( 288) ( 608) | 0x20001a90 | 0x20001d54 2023-01-15 22:23:34,843 # | SUM | | | 6616 ( 3352) ( 3264) 2023-01-15 22:23:34,843 # 2023-01-15 22:23:34,844 # *** halted. 2023-01-15 22:23:34,844 # ``` #### This PR ``` $ make BOARD=microbit-v2 -C examples/gcoap flash term [...] make: Entering directory '/home/maribu/Repos/software/RIOT/examples/gcoap' /home/maribu/Repos/software/RIOT/dist/tools/pyterm/pyterm -p "/dev/ttyACM0" -b "115200" 2023-01-15 22:22:27,842 # Connect to serial port /dev/ttyACM0 Welcome to pyterm! Type '/exit' to exit. coap get [::1] /.well-known/core 2023-01-15 22:22:40,042 # coap get [::1] /.well-known/core 2023-01-15 22:22:40,046 # gcoap_cli: sending msg ID 25182, 23 bytes 2023-01-15 22:22:40,050 # gcoap: response Success, code 2.05, 46 bytes 2023-01-15 22:22:40,054 # </cli/stats>;ct=0;rt="count";obs,</riot/board> > coap get [::1] foo 2023-01-15 22:22:43,858 # coap get [::1] foo 2023-01-15 22:22:43,862 # ERROR: URI-Path must start with a "/" 2023-01-15 22:22:43,866 # usage: coap <get|post|put|ping|proxy|info> ``` ### Issues/PRs references None Co-authored-by: Teufelchen1 <bennet.blischke@haw-hamburg.de> Co-authored-by: Marian Buschsieweke <marian.buschsieweke@ovgu.de> |
||
---|---|---|
.. | ||
analog_util | ||
app_metadata | ||
arduino | ||
auto_init | ||
base64 | ||
benchmark | ||
bhp | ||
bitfield | ||
bloom | ||
bus | ||
can | ||
cb_mux | ||
checksum | ||
chunked_ringbuffer | ||
clif | ||
color | ||
congure | ||
cpp11-compat | ||
cpp_new_delete | ||
crypto | ||
cxx_ctor_guards | ||
debug_irq_disable | ||
div | ||
ecc | ||
eepreg | ||
embunit | ||
entropy_source | ||
event | ||
evtimer | ||
fido2 | ||
fmt | ||
frac | ||
fs | ||
fuzzing | ||
hashes | ||
include | ||
iolist | ||
isrpipe | ||
libc | ||
log_color | ||
log_printfnoformat | ||
luid | ||
malloc_thread_safe | ||
matstat | ||
memarray | ||
mineplex | ||
net | ||
newlib_syscalls_default | ||
od | ||
oneway-malloc | ||
phydat | ||
picolibc_syscalls_default | ||
pipe | ||
pm_layered | ||
posix | ||
preprocessor | ||
progress_bar | ||
ps | ||
puf_sram | ||
random | ||
riotboot | ||
rtc_utils | ||
rust_riotmodules | ||
rust_riotmodules_standalone | ||
saul_reg | ||
sched_round_robin | ||
schedstatistics | ||
sema | ||
sema_inv | ||
senml | ||
seq | ||
shell | ||
shell_lock | ||
ssp | ||
stdio_nimble | ||
stdio_null | ||
stdio_rtt | ||
stdio_semihosting | ||
stdio_uart | ||
stdio_udp | ||
suit | ||
test_utils | ||
timex | ||
tiny_strerror | ||
trace | ||
trickle | ||
tsrb | ||
universal_address | ||
uri_parser | ||
usb | ||
usb_board_reset | ||
ut_process | ||
uuid | ||
vfs | ||
vfs_util | ||
xtimer | ||
zptr | ||
ztimer | ||
ztimer64 | ||
doc.txt | ||
Kconfig | ||
Kconfig.newlib | ||
Kconfig.picolibc | ||
Kconfig.stdio | ||
Makefile | ||
Makefile.dep | ||
Makefile.include |