aboutsummaryrefslogtreecommitdiff
path: root/nginx/ngx_http_js_module.c
diff options
context:
space:
mode:
authorDmitry Volyntsev <xeioex@nginx.com>2024-01-11 15:13:47 -0800
committerDmitry Volyntsev <xeioex@nginx.com>2024-01-11 15:13:47 -0800
commit5b007e8a919b1daaed1026b25ddef862b19eefc7 (patch)
tree2c07e99ddc701f6fa01d860e8fba75c888343414 /nginx/ngx_http_js_module.c
parent4356c55285c0e88483b8cb237ce30f1096c033ea (diff)
downloadnjs-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.c7
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;