fix: cJSON-Verschachtelung begrenzen
C1: Ein POST an /api/v1/device/state mit tief verschachteltem JSON (z.B. 20 Ebenen "[[[[...") lässt cJSONs rekursiven Parser den 6-KB-Stack des HTTP-Tasks überlaufen - CJSON_NESTING_LIMIT war mit 1000 viel zu hoch und FreeRTOS' Stack-Overflow-Checking ist aus. Begrenzt auf 8 Ebenen, sowohl für die Firmware (third_party/cJSON/cJSON.c) als auch für die Host-Tests (nl_cjson), damit beide dasselbe Verhalten zeigen. Test: test_post_validation deckt jetzt einen Body mit 20 verschachtelten Arrays ab (400 "invalid json").
This commit is contained in:
@@ -73,6 +73,10 @@ set(NL_FW_SOURCES
|
||||
src/sys/nl_app_api.c
|
||||
third_party/cJSON/cJSON.c)
|
||||
|
||||
# C1: deeply nested JSON must not overflow the 6 KB HTTP task stack (parse_value recurses).
|
||||
set_source_files_properties(third_party/cJSON/cJSON.c PROPERTIES
|
||||
COMPILE_DEFINITIONS "CJSON_NESTING_LIMIT=8")
|
||||
|
||||
set(NL_FW ninlight_${NINLIGHT_DEVICE})
|
||||
add_executable(${NL_FW} ${NL_SDK_BOOT_SOURCES} ${NL_FW_SOURCES} ${NL_SDK_OBJECTS})
|
||||
set_target_properties(${NL_FW} PROPERTIES SUFFIX ".elf")
|
||||
|
||||
Reference in New Issue
Block a user