quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

commit bba2ab64c9dd3ab579074719f9a4f76c10daaf43
parent f1cd342ce5911a84caa58e1ab160f55f72121abc
Author: Charlie Gordon <github@chqrlie.org>
Date:   Mon, 12 Feb 2024 18:34:52 +0100

Simplify and clarify URL quoting js_std_urlGet

Diffstat:
Mquickjs/quickjs-libc.c | 11+++++++----
1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/quickjs/quickjs-libc.c b/quickjs/quickjs-libc.c @@ -1446,7 +1446,7 @@ static JSValue js_std_urlGet(JSContext *ctx, JSValueConst this_val, DynBuf header_buf_s, *header_buf = &header_buf_s; char *buf; size_t i, len; - int c, status; + int status; JSValue response = JS_UNDEFINED, ret_obj; JSValueConst options_obj; FILE *f; @@ -1474,17 +1474,20 @@ static JSValue js_std_urlGet(JSContext *ctx, JSValueConst this_val, js_std_dbuf_init(ctx, &cmd_buf); dbuf_printf(&cmd_buf, "%s '", URL_GET_PROGRAM); - len = strlen(url); - for(i = 0; i < len; i++) { - switch (c = url[i]) { + for(i = 0; url[i] != '\0'; i++) { + unsigned char c = url[i]; + switch (c) { case '\'': + /* shell single quoted string does not support \' */ dbuf_putstr(&cmd_buf, "'\\''"); break; case '[': case ']': case '{': case '}': case '\\': + /* prevent interpretation by curl as range or set specification */ dbuf_putc(&cmd_buf, '\\'); /* FALLTHROUGH */ default: dbuf_putc(&cmd_buf, c); + break; } } JS_FreeCString(ctx, url);