@@ -359,20 +359,25 @@ unsigned long int aclk_tbeb_delay(int reset, int base, unsigned long int min, un
359
359
return delay ;
360
360
}
361
361
362
- static inline int aclk_parse_pair (const char * src , const char c , char * * a , char * * b )
362
+ static inline int aclk_parse_userpass_pair (const char * src , const char c , char * * a , char * * b )
363
363
{
364
364
const char * ptr = strchr (src , c );
365
365
if (ptr == NULL )
366
366
return 1 ;
367
367
368
- // allow empty string
369
- /* if (!*(ptr+1))
370
- return 1;*/
368
+ char * tmp_a = callocz (1 , ptr - src + 1 );
369
+ memcpy (tmp_a , src , ptr - src );
371
370
372
- * a = callocz (1 , ptr - src + 1 );
373
- memcpy (* a , src , ptr - src );
371
+ char * decoded_a = callocz (1 , ptr - src + 1 );
372
+ url_decode_r (decoded_a , tmp_a , ptr - src + 1 );
373
+ freez (tmp_a );
374
+ * a = decoded_a ;
374
375
375
- * b = strdupz (ptr + 1 );
376
+ char * tmp_b = strdupz (ptr + 1 );
377
+ char * decoded_b = callocz (1 , strlen (tmp_b ) + 1 );
378
+ url_decode_r (decoded_b , tmp_b , strlen (tmp_b ) + 1 );
379
+ freez (tmp_b );
380
+ * b = decoded_b ;
376
381
377
382
return 0 ;
378
383
}
@@ -399,7 +404,7 @@ void aclk_set_proxy(char **ohost, int *port, char **uname, char **pwd, enum mqtt
399
404
400
405
if ((tmp = strchr (ptr , '@' ))) {
401
406
* tmp = 0 ;
402
- if (aclk_parse_pair (ptr , ':' , uname , pwd )) {
407
+ if (aclk_parse_userpass_pair (ptr , ':' , uname , pwd )) {
403
408
error_report ("Failed to get username and password for proxy. Will attempt connection without authentication" );
404
409
}
405
410
ptr = tmp + 1 ;
0 commit comments