@@ -1291,7 +1291,7 @@ static JSValue js_std_file_putByte(JSContext *ctx, JSValue this_val,
1291
1291
/* urlGet */
1292
1292
#if !defined(__wasi__ )
1293
1293
1294
- #define URL_GET_PROGRAM "curl -s -i"
1294
+ #define URL_GET_PROGRAM "curl -s -i -- "
1295
1295
#define URL_GET_BUF_SIZE 4096
1296
1296
1297
1297
static int http_get_header_line (FILE * f , char * buf , size_t buf_size ,
@@ -1364,16 +1364,22 @@ static JSValue js_std_urlGet(JSContext *ctx, JSValue this_val,
1364
1364
}
1365
1365
1366
1366
js_std_dbuf_init (ctx , & cmd_buf );
1367
- dbuf_printf (& cmd_buf , "%s '' " , URL_GET_PROGRAM );
1367
+ dbuf_printf (& cmd_buf , "%s '" , URL_GET_PROGRAM );
1368
1368
len = strlen (url );
1369
1369
for (i = 0 ; i < len ; i ++ ) {
1370
- c = url [i ];
1371
- if (c == '\'' || c == '\\' )
1370
+ switch (c = url [i ]) {
1371
+ case '\'' :
1372
+ dbuf_putstr (& cmd_buf , "'\\''" );
1373
+ break ;
1374
+ case '[' : case ']' : case '{' : case '}' : case '\\' :
1372
1375
dbuf_putc (& cmd_buf , '\\' );
1373
- dbuf_putc (& cmd_buf , c );
1376
+ /* FALLTHROUGH */
1377
+ default :
1378
+ dbuf_putc (& cmd_buf , c );
1379
+ }
1374
1380
}
1375
1381
JS_FreeCString (ctx , url );
1376
- dbuf_putstr (& cmd_buf , "'' " );
1382
+ dbuf_putstr (& cmd_buf , "'" );
1377
1383
dbuf_putc (& cmd_buf , '\0' );
1378
1384
if (dbuf_error (& cmd_buf )) {
1379
1385
dbuf_free (& cmd_buf );
0 commit comments