From d3586380bd93d145e6dcd6ec3a1441cf3162df6e Mon Sep 17 00:00:00 2001 From: rofl0r Date: Mon, 21 Jul 2014 13:17:24 +0200 Subject: [PATCH] get_chain_data: reject invalid entries in proxylist section --- src/libproxychains.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/libproxychains.c b/src/libproxychains.c index 637da20..e0096d8 100644 --- a/src/libproxychains.c +++ b/src/libproxychains.c @@ -192,7 +192,12 @@ static void get_chain_data(proxy_data * pd, unsigned int *proxy_count, chain_typ pd[count].ps = PLAY_STATE; port_n = 0; - sscanf(buff, "%s %s %d %s %s", type, host, &port_n, pd[count].user, pd[count].pass); + int ret = sscanf(buff, "%s %s %d %s %s", type, host, &port_n, pd[count].user, pd[count].pass); + if(ret < 3 || ret == EOF) { + inv: + fprintf(stderr, "error: invalid item in proxylist section: %s", buff); + exit(1); + } in_addr_t host_ip = inet_addr(host); if(host_ip == INADDR_NONE) { @@ -209,7 +214,7 @@ static void get_chain_data(proxy_data * pd, unsigned int *proxy_count, chain_typ } else if(!strcmp(type, "socks5")) { pd[count].pt = SOCKS5_TYPE; } else - continue; + goto inv; if(pd[count].ip.as_int && port_n && pd[count].ip.as_int != (uint32_t) - 1) count++;