aboutsummaryrefslogtreecommitdiff
path: root/nginx/ngx_http_js_module.c
diff options
context:
space:
mode:
authorDmitry Volyntsev <xeioex@nginx.com>2023-11-21 08:57:03 -0800
committerDmitry Volyntsev <xeioex@nginx.com>2023-11-21 08:57:03 -0800
commit2743bab180ab067ea6d146c92a30a7f88bff7b2a (patch)
tree573308bd4ee0c623627bd7eb48ce6b6f67cd195e /nginx/ngx_http_js_module.c
parent62d0d45611cf8eaab28ec7a64d4bb9b12b3513c0 (diff)
downloadnjs-2743bab180ab067ea6d146c92a30a7f88bff7b2a.tar.gz
njs-2743bab180ab067ea6d146c92a30a7f88bff7b2a.zip
Modules: fixed js_set with Buffer values.
Previously, a Buffer value which contains invalid UTF-8 when returned as a value for js_set handler was mangled because the bytes value was converted to a string value. The fix is to use bytes value of Buffer, TypedArray and ArrayBuffer as is, and not convert it to a string first.
Diffstat (limited to 'nginx/ngx_http_js_module.c')
-rw-r--r--nginx/ngx_http_js_module.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/nginx/ngx_http_js_module.c b/nginx/ngx_http_js_module.c
index 49f9790f..6c74a4e5 100644
--- a/nginx/ngx_http_js_module.c
+++ b/nginx/ngx_http_js_module.c
@@ -1250,7 +1250,7 @@ ngx_http_js_variable_set(ngx_http_request_t *r, ngx_http_variable_value_t *v,
ngx_int_t rc;
njs_int_t pending;
- ngx_str_t value;
+ njs_str_t value;
ngx_http_js_ctx_t *ctx;
rc = ngx_http_js_init_vm(r, ngx_http_js_request_proto_id);
@@ -1285,15 +1285,15 @@ ngx_http_js_variable_set(ngx_http_request_t *r, ngx_http_variable_value_t *v,
return NGX_ERROR;
}
- if (ngx_js_retval(ctx->vm, &ctx->retval, &value) != NGX_OK) {
+ if (ngx_js_string(ctx->vm, njs_value_arg(&ctx->retval), &value) != NGX_OK) {
return NGX_ERROR;
}
- v->len = value.len;
+ v->len = value.length;
v->valid = 1;
v->no_cacheable = 0;
v->not_found = 0;
- v->data = value.data;
+ v->data = value.start;
return NGX_OK;
}