diff options
author | Dmitry Volyntsev <xeioex@nginx.com> | 2024-01-11 15:13:47 -0800 |
---|---|---|
committer | Dmitry Volyntsev <xeioex@nginx.com> | 2024-01-11 15:13:47 -0800 |
commit | 5b007e8a919b1daaed1026b25ddef862b19eefc7 (patch) | |
tree | 2c07e99ddc701f6fa01d860e8fba75c888343414 /nginx/ngx_http_js_module.c | |
parent | 4356c55285c0e88483b8cb237ce30f1096c033ea (diff) | |
download | njs-5b007e8a919b1daaed1026b25ddef862b19eefc7.tar.gz njs-5b007e8a919b1daaed1026b25ddef862b19eefc7.zip |
HTTP: avoiding arithmetic ops with NULL pointer in r.args getter.
Found by UndefinedBehaviorSanitizer.
Diffstat (limited to 'nginx/ngx_http_js_module.c')
-rw-r--r-- | nginx/ngx_http_js_module.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/nginx/ngx_http_js_module.c b/nginx/ngx_http_js_module.c index 8ed5972e..5384bd0a 100644 --- a/nginx/ngx_http_js_module.c +++ b/nginx/ngx_http_js_module.c @@ -2615,7 +2615,8 @@ static njs_int_t ngx_http_js_ext_get_args(njs_vm_t *vm, njs_object_prop_t *prop, njs_value_t *value, njs_value_t *setval, njs_value_t *retval) { - njs_int_t ret; + u_char *data; + njs_int_t ret; njs_value_t *args; ngx_http_js_ctx_t *ctx; ngx_http_request_t *r; @@ -2631,8 +2632,8 @@ ngx_http_js_ext_get_args(njs_vm_t *vm, njs_object_prop_t *prop, args = njs_value_arg(&ctx->args); if (njs_value_is_null(args)) { - ret = njs_vm_query_string_parse(vm, r->args.data, - r->args.data + r->args.len, args); + data = (r->args.len != 0) ? r->args.data : (u_char *) ""; + ret = njs_vm_query_string_parse(vm, data, data + r->args.len, args); if (ret == NJS_ERROR) { return NJS_ERROR; |