From fec0da52af04615c17dcf5ab6b91ca8afbae1c64 Mon Sep 17 00:00:00 2001 From: z3APA3A <3APA3A@3proxy.ru> Date: Mon, 25 Jan 2016 14:49:17 +0300 Subject: [PATCH] fixed: use SASIZE() instead of sizeof() in connect() for FreeBSD compatibility --- src/auth.c | 6 +++--- src/common.c | 2 +- src/dnspr.c | 2 +- src/ftppr.c | 5 ++--- src/proxymain.c | 2 +- 5 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/auth.c b/src/auth.c index f1a9c2c..7e8263b 100644 --- a/src/auth.c +++ b/src/auth.c @@ -1067,13 +1067,13 @@ unsigned long udpresolve(int af, unsigned char * name, unsigned char * value, un break; } if(makeauth && !SAISNULL(&authnserver.addr)){ - memcpy(sinsr, &authnserver.addr, sizeof(addr)); + memcpy(sinsr, &authnserver.addr, sizeof(authnserver.addr)); } else { - memcpy(sinsr, &nservers[i].addr, sizeof(addr)); + memcpy(sinsr, &nservers[i].addr, sizeof(nservers[i].addr)); } if(usetcp){ - if(so._connect(sock,sinsr,sizeof(addr))) { + if(so._connect(sock,sinsr,SASIZE(sinsr))) { so._shutdown(sock, SHUT_RDWR); so._closesocket(sock); break; diff --git a/src/common.c b/src/common.c index f4a68fb..6cb3d50 100644 --- a/src/common.c +++ b/src/common.c @@ -688,7 +688,7 @@ int doconnect(struct clientparam * param){ #ifdef _WIN32 unsigned long ul = 1; #endif - if(so._connect(param->remsock,(struct sockaddr *)¶m->sinsr,sizeof(param->sinsr))) { + if(so._connect(param->remsock,(struct sockaddr *)¶m->sinsr,SASIZE(¶m->sinsr))) { return (13); } param->nconnects++; diff --git a/src/dnspr.c b/src/dnspr.c index 2f8a532..3e4137e 100644 --- a/src/dnspr.c +++ b/src/dnspr.c @@ -140,7 +140,7 @@ void * dnsprchild(struct clientparam* param) { } memcpy(¶m->sinsr, &nservers[0].addr, sizeof(param->sinsr)); if(nservers[0].usetcp) { - if(so._connect(param->remsock,(struct sockaddr *)¶m->sinsr,sizeof(param->sinsr))) RETURN(830); + if(so._connect(param->remsock,(struct sockaddr *)¶m->sinsr,SASIZE(¶m->sinsr))) RETURN(830); buf-=2; *(unsigned short*)buf = htons(i); i+=2; diff --git a/src/ftppr.c b/src/ftppr.c index f1a4f74..7c9cb00 100644 --- a/src/ftppr.c +++ b/src/ftppr.c @@ -119,11 +119,11 @@ void * ftpprchild(struct clientparam* param) { clidatasock = INVALID_SOCKET; } if ((clidatasock=socket(SASOCK(¶m->sincl), SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) {RETURN(821);} - sasize = sizeof(param->sincl); *SAPORT(¶m->sincl) = 0; if(so._bind(clidatasock, (struct sockaddr *)¶m->sincl, SASIZE(¶m->sincl))){RETURN(822);} if (pasv) { if(so._listen(clidatasock, 1)) {RETURN(823);} + sasize = sizeof(param->sincl); if(so._getsockname(clidatasock, (struct sockaddr *)¶m->sincl, &sasize)){RETURN(824);} if(*SAFAMILY(¶m->sincl) == AF_INET) sprintf((char *)buf, "227 OK (%u,%u,%u,%u,%u,%u)\r\n", @@ -145,8 +145,7 @@ void * ftpprchild(struct clientparam* param) { if(sscanf((char *)buf+5, "%lu,%lu,%lu,%lu,%hu,%hu", &b1, &b2, &b3, &b4, &b5, &b6)!=6) {RETURN(828);} *SAPORT(¶m->sincr) = htons((unsigned short)((b5<<8)^b6)); - sasize = sizeof(param->sincr); - if(so._connect(clidatasock, (struct sockaddr *)¶m->sincr, sasize)) { + if(so._connect(clidatasock, (struct sockaddr *)¶m->sincr, SASIZE(¶m->sincr))) { so._closesocket(clidatasock); clidatasock = INVALID_SOCKET; RETURN(826); diff --git a/src/proxymain.c b/src/proxymain.c index ab55602..4198f61 100644 --- a/src/proxymain.c +++ b/src/proxymain.c @@ -530,7 +530,7 @@ int MODULEMAINFUNC (int argc, char** argv){ new_sock=so._socket(SASOCK(&defparam.sincr), SOCK_STREAM, IPPROTO_TCP); if(new_sock != INVALID_SOCKET){ parsehost(srv.family, cbc_string, (struct sockaddr *)&defparam.sincr); - if(so._connect(new_sock,(struct sockaddr *)&defparam.sincr,sizeof(defparam.sincr))) { + if(so._connect(new_sock,(struct sockaddr *)&defparam.sincr,SASIZE(&defparam.sincr))) { so._closesocket(new_sock); new_sock = INVALID_SOCKET; usleep(SLEEPTIME);