@cryptotaxi247 / netdata-1 / commits / 86bb893a8

ACLK: allow encoded proxy username and password to work (#19508)

allow encoded proxy username and password to work

Costa Tsaousis committed Jan 28, 2025 at 12:24 UTC 86bb893a8c6f0cb163e93c8ff092b02276b7ff40
1 file changed +13 -8
src/aclk/aclk_util.c
+13 -8
@@ -359,20 +359,25 @@ unsigned long int aclk_tbeb_delay(int reset, int base, unsigned long int min, un
359 return delay;
360 }
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 {
364 const char *ptr = strchr(src, c);
365 if (ptr == NULL)
366 return 1;
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);
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;
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;
381
382 return 0;
383 }
@@ -399,7 +404,7 @@ void aclk_set_proxy(char **ohost, int *port, char **uname, char **pwd, enum mqtt
404
405 if ((tmp = strchr(ptr, '@'))) {
406 *tmp = 0;
402 - if(aclk_parse_pair(ptr, ':', uname, pwd)) {
407 + if(aclk_parse_userpass_pair(ptr, ':', uname, pwd)) {
408 error_report("Failed to get username and password for proxy. Will attempt connection without authentication");
409 }
410 ptr = tmp+1;