Simplify and clarify URL quoting js_std_urlGet
This commit is contained in:
parent
ed49e0f39e
commit
79d417a90d
1 changed files with 7 additions and 4 deletions
|
@ -1337,7 +1337,7 @@ static JSValue js_std_urlGet(JSContext *ctx, JSValue this_val,
|
||||||
DynBuf header_buf_s, *header_buf = &header_buf_s;
|
DynBuf header_buf_s, *header_buf = &header_buf_s;
|
||||||
char *buf;
|
char *buf;
|
||||||
size_t i, len;
|
size_t i, len;
|
||||||
int c, status;
|
int status;
|
||||||
JSValue response = JS_UNDEFINED, ret_obj;
|
JSValue response = JS_UNDEFINED, ret_obj;
|
||||||
JSValue options_obj;
|
JSValue options_obj;
|
||||||
FILE *f;
|
FILE *f;
|
||||||
|
@ -1365,17 +1365,20 @@ static JSValue js_std_urlGet(JSContext *ctx, JSValue this_val,
|
||||||
|
|
||||||
js_std_dbuf_init(ctx, &cmd_buf);
|
js_std_dbuf_init(ctx, &cmd_buf);
|
||||||
dbuf_printf(&cmd_buf, "%s '", URL_GET_PROGRAM);
|
dbuf_printf(&cmd_buf, "%s '", URL_GET_PROGRAM);
|
||||||
len = strlen(url);
|
for(i = 0; url[i] != '\0'; i++) {
|
||||||
for(i = 0; i < len; i++) {
|
unsigned char c = url[i];
|
||||||
switch (c = url[i]) {
|
switch (c) {
|
||||||
case '\'':
|
case '\'':
|
||||||
|
/* shell single quoted string does not support \' */
|
||||||
dbuf_putstr(&cmd_buf, "'\\''");
|
dbuf_putstr(&cmd_buf, "'\\''");
|
||||||
break;
|
break;
|
||||||
case '[': case ']': case '{': case '}': case '\\':
|
case '[': case ']': case '{': case '}': case '\\':
|
||||||
|
/* prevent interpretation by curl as range or set specification */
|
||||||
dbuf_putc(&cmd_buf, '\\');
|
dbuf_putc(&cmd_buf, '\\');
|
||||||
/* FALLTHROUGH */
|
/* FALLTHROUGH */
|
||||||
default:
|
default:
|
||||||
dbuf_putc(&cmd_buf, c);
|
dbuf_putc(&cmd_buf, c);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
JS_FreeCString(ctx, url);
|
JS_FreeCString(ctx, url);
|
||||||
|
|
Loading…
Reference in a new issue