Centralize close() and set file descriptor values to -1 to prevent subsequent re-close

pull/542/head
Jeff Frontz 2023-12-22 17:51:50 -05:00
parent 0279dda939
commit e988933ce9
1 changed files with 8 additions and 4 deletions

View File

@ -462,8 +462,10 @@ static int start_chain(int *fd, proxy_data * pd, char *begin_mark) {
error1: error1:
proxychains_write_log(TP " timeout\n"); proxychains_write_log(TP " timeout\n");
error: error:
if(*fd != -1) if(*fd != -1) {
close(*fd); close(*fd);
*fd = -1;
}
return SOCKET_ERROR; return SOCKET_ERROR;
} }
@ -537,7 +539,6 @@ static int chain_step(int ns, proxy_data * pfrom, proxy_data * pto) {
if(!inet_ntop(v6?AF_INET6:AF_INET,pto->ip.addr.v6,ip_buf,sizeof ip_buf)) { if(!inet_ntop(v6?AF_INET6:AF_INET,pto->ip.addr.v6,ip_buf,sizeof ip_buf)) {
pto->ps = DOWN_STATE; pto->ps = DOWN_STATE;
proxychains_write_log("<--ip conversion error!\n"); proxychains_write_log("<--ip conversion error!\n");
close(ns);
return SOCKET_ERROR; return SOCKET_ERROR;
} }
hostname = ip_buf; hostname = ip_buf;
@ -552,12 +553,10 @@ static int chain_step(int ns, proxy_data * pfrom, proxy_data * pto) {
case BLOCKED: case BLOCKED:
pto->ps = BLOCKED_STATE; pto->ps = BLOCKED_STATE;
proxychains_write_log("<--denied\n"); proxychains_write_log("<--denied\n");
close(ns);
break; break;
case SOCKET_ERROR: case SOCKET_ERROR:
pto->ps = DOWN_STATE; pto->ps = DOWN_STATE;
proxychains_write_log("<--socket error or timeout!\n"); proxychains_write_log("<--socket error or timeout!\n");
close(ns);
break; break;
} }
return retcode; return retcode;
@ -581,6 +580,10 @@ int connect_proxy_chain(int sock, ip_type target_ip,
PFUNC(); PFUNC();
again: again:
if (ns != -1) {
close(ns);
ns = -1;
}
rc = -1; rc = -1;
DUMP_PROXY_CHAIN(pd, proxy_count); DUMP_PROXY_CHAIN(pd, proxy_count);
@ -716,6 +719,7 @@ int connect_proxy_chain(int sock, ip_type target_ip,
dup2(ns, sock); dup2(ns, sock);
close(ns); close(ns);
return 0; return 0;
error: error:
if(ns != -1) if(ns != -1)
close(ns); close(ns);