@@ -1282,7 +1282,7 @@ static JSValue js_std_file_putByte(JSContext *ctx, JSValueConst this_val,
1282
1282
1283
1283
/* urlGet */
1284
1284
1285
- #define URL_GET_PROGRAM "curl -s -i"
1285
+ #define URL_GET_PROGRAM "curl -s -i -- "
1286
1286
#define URL_GET_BUF_SIZE 4096
1287
1287
1288
1288
static int http_get_header_line (FILE * f , char * buf , size_t buf_size ,
@@ -1355,16 +1355,22 @@ static JSValue js_std_urlGet(JSContext *ctx, JSValueConst this_val,
1355
1355
}
1356
1356
1357
1357
js_std_dbuf_init (ctx , & cmd_buf );
1358
- dbuf_printf (& cmd_buf , "%s '' " , URL_GET_PROGRAM );
1358
+ dbuf_printf (& cmd_buf , "%s '" , URL_GET_PROGRAM );
1359
1359
len = strlen (url );
1360
1360
for (i = 0 ; i < len ; i ++ ) {
1361
- c = url [i ];
1362
- if (c == '\'' || c == '\\' )
1361
+ switch (c = url [i ]) {
1362
+ case '\'' :
1363
+ dbuf_putstr (& cmd_buf , "'\\''" );
1364
+ break ;
1365
+ case '[' : case ']' : case '{' : case '}' : case '\\' :
1363
1366
dbuf_putc (& cmd_buf , '\\' );
1364
- dbuf_putc (& cmd_buf , c );
1367
+ /* FALLTHROUGH */
1368
+ default :
1369
+ dbuf_putc (& cmd_buf , c );
1370
+ }
1365
1371
}
1366
1372
JS_FreeCString (ctx , url );
1367
- dbuf_putstr (& cmd_buf , "'' " );
1373
+ dbuf_putstr (& cmd_buf , "'" );
1368
1374
dbuf_putc (& cmd_buf , '\0' );
1369
1375
if (dbuf_error (& cmd_buf )) {
1370
1376
dbuf_free (& cmd_buf );
0 commit comments