[njs] QuickJS: fixed non-NULL terminated strings formatting in exceptions.
noreply at nginx.com
noreply at nginx.com
Wed Feb 19 00:31:02 UTC 2025
details: https://github.com/nginx/njs/commit/b6d108c812c07b11d4c3f65a48a5898139ac1ae4
branches: master
commit: b6d108c812c07b11d4c3f65a48a5898139ac1ae4
user: Dmitry Volyntsev <xeioex at nginx.com>
date: Wed, 12 Feb 2025 19:11:08 -0800
description:
QuickJS: fixed non-NULL terminated strings formatting in exceptions.
When "%*s" is specified, the first integer is interpreted as width.
Width specifies *minimum* number of characters to output. The next
string is expected to be NULL-terminated.
When "%.*s" is specified, the first integer is interpreted as precision.
Precision specifies *maximum* number of characters to output.
---
external/njs_shell.c | 6 +++---
external/qjs_webcrypto_module.c | 2 +-
nginx/ngx_js.c | 4 ++--
nginx/ngx_stream_js_module.c | 2 +-
src/qjs_buffer.c | 2 +-
5 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/external/njs_shell.c b/external/njs_shell.c
index 776c2536..015c930f 100644
--- a/external/njs_shell.c
+++ b/external/njs_shell.c
@@ -2590,7 +2590,7 @@ njs_qjs_module_loader(JSContext *ctx, const char *module_name, void *opaque)
(void) close(info.fd);
if (njs_slow_path(ret != NJS_OK)) {
- JS_ThrowInternalError(ctx, "while reading \"%*s\" module",
+ JS_ThrowInternalError(ctx, "while reading \"%.*s\" module",
(int) info.file.length, info.file.start);
return NULL;
}
@@ -2599,7 +2599,7 @@ njs_qjs_module_loader(JSContext *ctx, const char *module_name, void *opaque)
ret = njs_console_set_cwd(console, &info.file);
if (njs_slow_path(ret != NJS_OK)) {
- JS_ThrowInternalError(ctx, "while setting cwd for \"%*s\" module",
+ JS_ThrowInternalError(ctx, "while setting cwd for \"%.*s\" module",
(int) info.file.length, info.file.start);
return NULL;
}
@@ -2827,7 +2827,7 @@ njs_engine_qjs_unhandled_rejection(njs_engine_t *engine)
return -1;
}
- JS_ThrowTypeError(ctx, "unhandled promise rejection: %*s", (int) len, str);
+ JS_ThrowTypeError(ctx, "unhandled promise rejection: %.*s", (int) len, str);
JS_FreeCString(ctx, str);
for (i = 0; i < console->rejected_promises->items; i++) {
diff --git a/external/qjs_webcrypto_module.c b/external/qjs_webcrypto_module.c
index 64098f4e..cc654c0a 100644
--- a/external/qjs_webcrypto_module.c
+++ b/external/qjs_webcrypto_module.c
@@ -4802,7 +4802,7 @@ qjs_webcrypto_error(JSContext *cx, const char *fmt, ...)
}
}
- JS_ThrowTypeError(cx, "%*s", (int) (p - errstr), errstr);
+ JS_ThrowTypeError(cx, "%.*s", (int) (p - errstr), errstr);
}
diff --git a/nginx/ngx_js.c b/nginx/ngx_js.c
index 5c2a44cb..7f7b7362 100644
--- a/nginx/ngx_js.c
+++ b/nginx/ngx_js.c
@@ -1988,7 +1988,7 @@ ngx_qjs_module_loader(JSContext *cx, const char *module_name, void *opaque)
(void) close(info.fd);
if (ret != NJS_OK) {
- JS_ThrowInternalError(cx, "while reading \"%*s\" module",
+ JS_ThrowInternalError(cx, "while reading \"%.*s\" module",
(int) info.file.length, info.file.start);
return NULL;
}
@@ -2057,7 +2057,7 @@ ngx_qjs_unhandled_rejection(ngx_js_ctx_t *ctx)
return -1;
}
- JS_ThrowTypeError(cx, "unhandled promise rejection: %*s", (int) len, str);
+ JS_ThrowTypeError(cx, "unhandled promise rejection: %.*s", (int) len, str);
JS_FreeCString(cx, str);
for (i = 0; i < ctx->rejected_promises->items; i++) {
diff --git a/nginx/ngx_stream_js_module.c b/nginx/ngx_stream_js_module.c
index a7a923ad..59a3e9d2 100644
--- a/nginx/ngx_stream_js_module.c
+++ b/nginx/ngx_stream_js_module.c
@@ -2126,7 +2126,7 @@ ngx_stream_qjs_event(ngx_stream_session_t *s, JSContext *cx, ngx_str_t *event)
}
if (i == n) {
- (void) JS_ThrowInternalError(cx, "unknown event \"%*s\"",
+ (void) JS_ThrowInternalError(cx, "unknown event \"%.*s\"",
(int) event->len, event->data);
return NULL;
}
diff --git a/src/qjs_buffer.c b/src/qjs_buffer.c
index 8fc296ad..638d273c 100644
--- a/src/qjs_buffer.c
+++ b/src/qjs_buffer.c
@@ -2099,7 +2099,7 @@ qjs_buffer_encoding(JSContext *ctx, JSValueConst value, JS_BOOL thrw)
JS_FreeCString(ctx, (char *) name.start);
if (thrw) {
- JS_ThrowTypeError(ctx, "\"%*s\" encoding is not supported",
+ JS_ThrowTypeError(ctx, "\"%.*s\" encoding is not supported",
(int) name.length, name.start);
}
More information about the nginx-devel
mailing list