From: Dmitry Volyntsev Date: Tue, 9 Jan 2024 06:20:10 +0000 (-0800) Subject: Avoiding casting NaN value to int64_t in njs.dump(). X-Git-Tag: 0.8.3~21 X-Git-Url: http://www.kaiwu.me/sitemap.xml?a=commitdiff_plain;h=c1917e2181263c44145ccb449871d3d88fdc5467;p=njs.git Avoiding casting NaN value to int64_t in njs.dump(). Found by UndefinedBehaviorSanitizer. --- diff --git a/src/njs_json.c b/src/njs_json.c index 4e113ba2..0c46e93a 100644 --- a/src/njs_json.c +++ b/src/njs_json.c @@ -1894,7 +1894,7 @@ njs_dump_visited(njs_vm_t *vm, njs_json_stringify_t *stringify, } -njs_inline njs_bool_t +njs_inline void njs_dump_empty(njs_json_stringify_t *stringify, njs_json_state_t *state, njs_chb_t *chain, njs_bool_t sep_position) { @@ -1902,7 +1902,7 @@ njs_dump_empty(njs_json_stringify_t *stringify, njs_json_state_t *state, int64_t diff; if (!state->array) { - return 0; + return; } if (sep_position) { @@ -1919,6 +1919,10 @@ njs_dump_empty(njs_json_stringify_t *stringify, njs_json_state_t *state, } } + if (isnan(prev)) { + return; + } + if (isnan(key)) { key = state->length; } @@ -1947,8 +1951,6 @@ njs_dump_empty(njs_json_stringify_t *stringify, njs_json_state_t *state, njs_json_stringify_indent(stringify, chain, 1); } } - - return 1; }