diff options
author | Dmitry Volyntsev <xeioex@nginx.com> | 2023-11-21 08:57:03 -0800 |
---|---|---|
committer | Dmitry Volyntsev <xeioex@nginx.com> | 2023-11-21 08:57:03 -0800 |
commit | 2743bab180ab067ea6d146c92a30a7f88bff7b2a (patch) | |
tree | 573308bd4ee0c623627bd7eb48ce6b6f67cd195e /nginx/ngx_http_js_module.c | |
parent | 62d0d45611cf8eaab28ec7a64d4bb9b12b3513c0 (diff) | |
download | njs-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.c | 8 |
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; } |