Replace memcpy with assignment where appropriate

This commit is contained in:
z3APA3A 2016-02-05 18:31:17 +03:00
parent 3cc9796583
commit 13a7d6be11
8 changed files with 45 additions and 41 deletions

View File

@ -139,7 +139,7 @@ int timechanged (time_t oldtime, time_t newtime, ROTATION lt){
struct tm tmold; struct tm tmold;
struct tm *tm; struct tm *tm;
tm = localtime(&oldtime); tm = localtime(&oldtime);
memcpy(&tmold, tm, sizeof(tmold)); tmold = *tm;
tm = localtime(&newtime); tm = localtime(&newtime);
switch(lt){ switch(lt){
case MINUTELY: case MINUTELY:

View File

@ -242,7 +242,7 @@ int handleredirect(struct clientparam * param, struct ace * acentry){
} }
if(!connected){ if(!connected){
if(cur->type == R_EXTIP){ if(cur->type == R_EXTIP){
memcpy(&param->sinsl, &cur->addr, sizeof(cur->addr)); param->sinsl = cur->addr;
} }
else if(SAISNULL(&cur->addr) && !*SAPORT(&cur->addr)){ else if(SAISNULL(&cur->addr) && !*SAPORT(&cur->addr)){
if(cur->extuser){ if(cur->extuser){
@ -280,12 +280,12 @@ int handleredirect(struct clientparam * param, struct ace * acentry){
} }
else if(!*SAPORT(&cur->addr) && !SAISNULL(&cur->addr)) { else if(!*SAPORT(&cur->addr) && !SAISNULL(&cur->addr)) {
unsigned short port = *SAPORT(&param->sinsr); unsigned short port = *SAPORT(&param->sinsr);
memcpy(&param->sinsr, &cur->addr, SASIZE(&cur->addr)); param->sinsr = cur->addr;
*SAPORT(&param->sinsr) = port; *SAPORT(&param->sinsr) = port;
} }
else if(SAISNULL(&cur->addr) && *SAPORT(&cur->addr)) *SAPORT(&param->sinsr) = *SAPORT(&cur->addr); else if(SAISNULL(&cur->addr) && *SAPORT(&cur->addr)) *SAPORT(&param->sinsr) = *SAPORT(&cur->addr);
else { else {
memcpy(&param->sinsr, &cur->addr, SASIZE(&cur->addr)); param->sinsr = cur->addr;
} }
if((res = alwaysauth(param))){ if((res = alwaysauth(param))){
@ -609,7 +609,7 @@ int checkACL(struct clientparam * param){
if(param->redirected && acentry->chains && SAISNULL(&acentry->chains->addr) && !*SAPORT(&acentry->chains->addr)) { if(param->redirected && acentry->chains && SAISNULL(&acentry->chains->addr) && !*SAPORT(&acentry->chains->addr)) {
continue; continue;
} }
memcpy(&dup, acentry, sizeof(struct ace)); dup = *acentry;
return handleredirect(param, &dup); return handleredirect(param, &dup);
} }
return acentry->action; return acentry->action;
@ -700,7 +700,7 @@ int doauth(struct clientparam * param){
ac->password = mystrdup(param->password); ac->password = mystrdup(param->password);
myfree(tmp); myfree(tmp);
} }
memcpy(&ac->sa, &param->sincr, SASIZE(&param->sincr)); ac->sa = param->sincr;
break; break;
} }
} }
@ -709,7 +709,7 @@ int doauth(struct clientparam * param){
if(ac){ if(ac){
ac->expires = conf.time + conf.authcachetime; ac->expires = conf.time + conf.authcachetime;
ac->username = mystrdup(param->username); ac->username = mystrdup(param->username);
memcpy(&ac->sa, &param->sincr, SASIZE(&param->sincr)); ac->sa = param->sincr;
ac->password = NULL; ac->password = NULL;
if((conf.authcachetype&4) && param->password) ac->password = mystrdup(param->password); if((conf.authcachetype&4) && param->password) ac->password = mystrdup(param->password);
} }
@ -1038,17 +1038,18 @@ unsigned long udpresolve(int af, unsigned char * name, unsigned char * value, un
unsigned ttl; unsigned ttl;
#ifndef NOIPV6 #ifndef NOIPV6
struct sockaddr_in6 addr; struct sockaddr_in6 addr;
struct sockaddr_in6 *sinsr, *sinsl;
#else #else
struct sockaddr_in addr; struct sockaddr_in addr;
struct sockaddr_in *sinsr, *sinsl;
#endif #endif
struct sockaddr *sinsr, *sinsl;
int usetcp = 0; int usetcp = 0;
unsigned short serial = 1; unsigned short serial = 1;
buf = b+2; buf = b+2;
sinsl = (param && !makeauth)? (struct sockaddr *)&param->sinsl : (struct sockaddr *)&addr; sinsl = (param && !makeauth)? &param->sinsl : &addr;
sinsr = (param && !makeauth)? (struct sockaddr *)&param->sinsr : (struct sockaddr *)&addr; sinsr = (param && !makeauth)? &param->sinsr : &addr;
memset(sinsl, 0, sizeof(addr)); memset(sinsl, 0, sizeof(addr));
memset(sinsr, 0, sizeof(addr)); memset(sinsr, 0, sizeof(addr));
@ -1062,19 +1063,19 @@ unsigned long udpresolve(int af, unsigned char * name, unsigned char * value, un
*SAFAMILY(sinsl) = *SAFAMILY(&nservers[i].addr); *SAFAMILY(sinsl) = *SAFAMILY(&nservers[i].addr);
} }
if((sock=so._socket(SASOCK(sinsl), usetcp?SOCK_STREAM:SOCK_DGRAM, usetcp?IPPROTO_TCP:IPPROTO_UDP)) == INVALID_SOCKET) break; if((sock=so._socket(SASOCK(sinsl), usetcp?SOCK_STREAM:SOCK_DGRAM, usetcp?IPPROTO_TCP:IPPROTO_UDP)) == INVALID_SOCKET) break;
if(so._bind(sock,sinsl,SASIZE(sinsl))){ if(so._bind(sock,(struct sockaddr *)sinsl,SASIZE(sinsl))){
so._shutdown(sock, SHUT_RDWR); so._shutdown(sock, SHUT_RDWR);
so._closesocket(sock); so._closesocket(sock);
break; break;
} }
if(makeauth && !SAISNULL(&authnserver.addr)){ if(makeauth && !SAISNULL(&authnserver.addr)){
memcpy(sinsr, &authnserver.addr, sizeof(authnserver.addr)); *sinsr = authnserver.addr;
} }
else { else {
memcpy(sinsr, &nservers[i].addr, sizeof(nservers[i].addr)); *sinsr = nservers[i].addr;
} }
if(usetcp){ if(usetcp){
if(so._connect(sock,sinsr,SASIZE(sinsr))) { if(so._connect(sock,(struct sockaddr *)sinsr,SASIZE(sinsr))) {
so._shutdown(sock, SHUT_RDWR); so._shutdown(sock, SHUT_RDWR);
so._closesocket(sock); so._closesocket(sock);
break; break;
@ -1110,13 +1111,13 @@ unsigned long udpresolve(int af, unsigned char * name, unsigned char * value, un
len+=2; len+=2;
} }
if(socksendto(sock, sinsr, buf, len, conf.timeouts[SINGLEBYTE_L]*1000) != len){ if(socksendto(sock, (struct sockaddr *)sinsr, buf, len, conf.timeouts[SINGLEBYTE_L]*1000) != len){
so._shutdown(sock, SHUT_RDWR); so._shutdown(sock, SHUT_RDWR);
so._closesocket(sock); so._closesocket(sock);
continue; continue;
} }
if(param) param->statscli64 += len; if(param) param->statscli64 += len;
len = sockrecvfrom(sock, sinsr, buf, 4096, conf.timeouts[DNS_TO]*1000); len = sockrecvfrom(sock, (struct sockaddr *)sinsr, buf, 4096, conf.timeouts[DNS_TO]*1000);
so._shutdown(sock, SHUT_RDWR); so._shutdown(sock, SHUT_RDWR);
so._closesocket(sock); so._closesocket(sock);
if(len <= 13) { if(len <= 13) {
@ -1128,7 +1129,7 @@ unsigned long udpresolve(int af, unsigned char * name, unsigned char * value, un
us = ntohs(*(unsigned short*)buf); us = ntohs(*(unsigned short*)buf);
len-=2; len-=2;
buf+=2; buf+=2;
if(us > 4096 || us < len || (us > len && sockrecvfrom(sock, sinsr, buf+len, us-len, conf.timeouts[DNS_TO]*1000) != us-len)) { if(us > 4096 || us < len || (us > len && sockrecvfrom(sock, (struct sockaddr *)sinsr, buf+len, us-len, conf.timeouts[DNS_TO]*1000) != us-len)) {
continue; continue;
} }
} }

View File

@ -676,10 +676,10 @@ int doconnect(struct clientparam * param){
if(SAISNULL(&param->sinsl)){ if(SAISNULL(&param->sinsl)){
#ifndef NOIPV6 #ifndef NOIPV6
if(*SAFAMILY(&param->sinsr) == AF_INET6) memcpy(&param->sinsl, &param->srv->extsa6, sizeof(param->srv->extsa6)); if(*SAFAMILY(&param->sinsr) == AF_INET6) param->sinsl = param->srv->extsa6;
else else
#endif #endif
memcpy(&param->sinsl, &param->srv->extsa, sizeof(param->srv->extsa)); param->sinsl = param->srv->extsa;
*SAPORT(&param->sinsl) = 0; *SAPORT(&param->sinsl) = 0;
} }
if(so._bind(param->remsock, (struct sockaddr*)&param->sinsl, SASIZE(&param->sinsl))==-1) { if(so._bind(param->remsock, (struct sockaddr*)&param->sinsl, SASIZE(&param->sinsl))==-1) {

View File

@ -274,7 +274,8 @@ static int h_external(int argc, unsigned char ** argv){
memset(&sa6, 0, sizeof(sa6)); memset(&sa6, 0, sizeof(sa6));
res = getip46(46, argv[1], (struct sockaddr *)&sa6); res = getip46(46, argv[1], (struct sockaddr *)&sa6);
if(!res) return 1; if(!res) return 1;
memcpy((*SAFAMILY(&sa6)==AF_INET)?(void *)&conf.extsa:(void *)&conf.extsa6, &sa6, sizeof(sa6)); if (*SAFAMILY(&sa6)==AF_INET) conf.extsa = sa6;
else conf.extsa6 = sa6;
#else #else
res = getip46(46, argv[1], (struct sockaddr *)&conf.extsa); res = getip46(46, argv[1], (struct sockaddr *)&conf.extsa);
if(!res) return 1; if(!res) return 1;

View File

@ -138,7 +138,7 @@ void * dnsprchild(struct clientparam* param) {
if(so._bind(param->remsock,(struct sockaddr *)&param->sinsl,SASIZE(&param->sinsl))) { if(so._bind(param->remsock,(struct sockaddr *)&param->sinsl,SASIZE(&param->sinsl))) {
RETURN(819); RETURN(819);
} }
memcpy(&param->sinsr, &nservers[0].addr, sizeof(param->sinsr)); param->sinsr = nservers[0].addr;
if(nservers[0].usetcp) { if(nservers[0].usetcp) {
if(so._connect(param->remsock,(struct sockaddr *)&param->sinsr,SASIZE(&param->sinsr))) RETURN(830); if(so._connect(param->remsock,(struct sockaddr *)&param->sinsr,SASIZE(&param->sinsr))) RETURN(830);
buf-=2; buf-=2;

View File

@ -189,7 +189,7 @@ SOCKET ftpdata(struct clientparam *param){
if(sscanf(sb+1, "%lu,%lu,%lu,%lu,%hu,%hu", &b1, &b2, &b3, &b4, &b5, &b6)!=6) return INVALID_SOCKET; if(sscanf(sb+1, "%lu,%lu,%lu,%lu,%hu,%hu", &b1, &b2, &b3, &b4, &b5, &b6)!=6) return INVALID_SOCKET;
rem = param->remsock; rem = param->remsock;
param->remsock = INVALID_SOCKET; param->remsock = INVALID_SOCKET;
memcpy(&param->req,&param->sinsr,sizeof(param->req)); param->req = param->sinsr;
*SAPORT(&param->req) = *SAPORT(&param->sinsr) = htons((unsigned short)((b5<<8)^b6)); *SAPORT(&param->req) = *SAPORT(&param->sinsr) = htons((unsigned short)((b5<<8)^b6));
i = param->operation; i = param->operation;
param->operation = FTP_DATA; param->operation = FTP_DATA;

View File

@ -26,7 +26,7 @@ void * threadfunc (void *p) {
continue; continue;
} }
#ifndef WITHMAIN #ifndef WITHMAIN
memcpy(&param->req, &param->sinsr, size); param->req = param->sinsr;
if(param->srv->acl) param->res = checkACL(param); if(param->srv->acl) param->res = checkACL(param);
if(param->res){ if(param->res){
param->srv->logfunc(param, "Connect back ACL failed"); param->srv->logfunc(param, "Connect back ACL failed");
@ -240,7 +240,10 @@ int MODULEMAINFUNC (int argc, char** argv){
struct sockaddr_in6 sa6; struct sockaddr_in6 sa6;
memset(&sa6, 0, sizeof(sa6)); memset(&sa6, 0, sizeof(sa6));
error = !getip46(46, argv[i]+2, (struct sockaddr *)&sa6); error = !getip46(46, argv[i]+2, (struct sockaddr *)&sa6);
if(!error) memcpy((*SAFAMILY(&sa6)==AF_INET)?(void *)&srv.extsa:(void *)&srv.extsa6, &sa6, sizeof(sa6)); if(!error) {
if (*SAFAMILY(&sa6)==AF_INET) srv.extsa = sa6;
else srv.extsa6 = sa6;
}
#else #else
error = !getip46(46, argv[i]+2, (struct sockaddr *)&srv.extsa); error = !getip46(46, argv[i]+2, (struct sockaddr *)&srv.extsa);
#endif #endif
@ -386,7 +389,7 @@ int MODULEMAINFUNC (int argc, char** argv){
if(! (newparam = myalloc (sizeof(defparam)))){ if(! (newparam = myalloc (sizeof(defparam)))){
return 2; return 2;
}; };
memcpy(newparam, &defparam, sizeof(defparam)); *newparam = defparam;
return((*srv.pf)((void *)newparam)? 1:0); return((*srv.pf)((void *)newparam)? 1:0);
} }
@ -621,7 +624,7 @@ int MODULEMAINFUNC (int argc, char** argv){
usleep(SLEEPTIME); usleep(SLEEPTIME);
continue; continue;
}; };
memcpy(newparam, &defparam, sizeof(defparam)); *newparam = defparam;
if(defparam.hostname)newparam->hostname=strdup(defparam.hostname); if(defparam.hostname)newparam->hostname=strdup(defparam.hostname);
clearstat(newparam); clearstat(newparam);
if(!isudp) newparam->clisock = new_sock; if(!isudp) newparam->clisock = new_sock;
@ -721,10 +724,10 @@ void srvinit(struct srvparam * srv, struct clientparam *param){
param->remsock = param->clisock = param->ctrlsock = param->ctrlsocksrv = INVALID_SOCKET; param->remsock = param->clisock = param->ctrlsock = param->ctrlsocksrv = INVALID_SOCKET;
*SAFAMILY(&param->req) = *SAFAMILY(&param->sinsl) = *SAFAMILY(&param->sinsr) = *SAFAMILY(&param->sincr) = *SAFAMILY(&param->sincl) = AF_INET; *SAFAMILY(&param->req) = *SAFAMILY(&param->sinsl) = *SAFAMILY(&param->sinsr) = *SAFAMILY(&param->sincr) = *SAFAMILY(&param->sincl) = AF_INET;
pthread_mutex_init(&srv->counter_mutex, NULL); pthread_mutex_init(&srv->counter_mutex, NULL);
memcpy(&srv->intsa, &conf.intsa, sizeof(srv->intsa)); srv->intsa = conf.intsa;
memcpy(&srv->extsa, &conf.extsa, sizeof(srv->extsa)); srv->extsa = conf.extsa;
#ifndef NOIPV6 #ifndef NOIPV6
memcpy(&srv->extsa6, &conf.extsa6, sizeof(srv->extsa6)); srv->extsa6 = conf.extsa6;
#endif #endif
} }
@ -748,13 +751,12 @@ void srvinit2(struct srvparam * srv, struct clientparam *param){
*SAFAMILY(&param->sinsl) = AF_INET; *SAFAMILY(&param->sinsl) = AF_INET;
*SAFAMILY(&param->sinsr) = AF_INET; *SAFAMILY(&param->sinsr) = AF_INET;
*SAFAMILY(&param->req) = AF_INET; *SAFAMILY(&param->req) = AF_INET;
memcpy(&param->sincr, &srv->intsa, sizeof(param->sincr)); param->sincr = param->sincl = srv->intsa;
memcpy(&param->sincl, &srv->intsa, sizeof(param->sincl));
#ifndef NOIPV6 #ifndef NOIPV6
memcpy(&param->sinsr, (srv->family == 6 || srv->family == 64)? (void *)&srv->extsa6: (void *)&srv->extsa, sizeof(param->sinsr)); if (srv->family == 6 || srv->family == 64) param->sinsr = srv->extsa6;
#else else
memcpy(&param->sinsr, &srv->extsa, sizeof(param->sinsr));
#endif #endif
param->sinsr = srv->extsa;
} }
void srvfree(struct srvparam * srv){ void srvfree(struct srvparam * srv){
@ -911,7 +913,7 @@ void copyfilter (struct filter *filter, struct srvparam *srv){
if(!filter->filter_open || !(data = (*filter->filter_open)(filter->data, srv))) continue; if(!filter->filter_open || !(data = (*filter->filter_open)(filter->data, srv))) continue;
memcpy(srv->filter + srv->nfilters, filter, sizeof(struct filter)); srv->filter[srv->nfilters] = *filter;
srv->filter[srv->nfilters].data = data; srv->filter[srv->nfilters].data = data;
if(srv->nfilters>0)srv->filter[srv->nfilters - 1].next = srv->filter + srv->nfilters; if(srv->nfilters>0)srv->filter[srv->nfilters - 1].next = srv->filter + srv->nfilters;
srv->nfilters++; srv->nfilters++;

View File

@ -133,7 +133,7 @@ void * sockschild(struct clientparam* param) {
} }
buf[i] = 0; buf[i] = 0;
if(!getip46(param->srv->family, buf, (struct sockaddr *) &param->req)) RETURN(100); if(!getip46(param->srv->family, buf, (struct sockaddr *) &param->req)) RETURN(100);
memcpy(&param->sinsr, &param->req, sizeof(param->req)); param->sinsr = param->req;
break; break;
default: default:
RETURN(997); RETURN(997);
@ -159,7 +159,7 @@ void * sockschild(struct clientparam* param) {
if(param->hostname)myfree(param->hostname); if(param->hostname)myfree(param->hostname);
param->hostname = (unsigned char *)mystrdup((char *)buf); param->hostname = (unsigned char *)mystrdup((char *)buf);
if(!getip46(param->srv->family, buf, (struct sockaddr *) &param->req)) RETURN(100); if(!getip46(param->srv->family, buf, (struct sockaddr *) &param->req)) RETURN(100);
memcpy(&param->sinsr, &param->req, sizeof(&param->req)); param->sinsr = param->req;
} }
} }
@ -173,9 +173,9 @@ void * sockschild(struct clientparam* param) {
case 3: case 3:
#ifndef NOIPV6 #ifndef NOIPV6
memcpy(&param->sinsl, *SAFAMILY(&param->req)==AF_INET6? (struct sockaddr *)&param->srv->extsa6:(struct sockaddr *)&param->srv->extsa, SASIZE(&param->req)); param->sinsl = *SAFAMILY(&param->req)==AF_INET6? param->srv->extsa6 : param->srv->extsa;
#else #else
memcpy(&param->sinsl, &param->srv->extsa, SASIZE(&param->req)); param->sinsl = param->srv->extsa;
#endif #endif
if ((param->remsock=so._socket(SASOCK(&param->req), command == 2? SOCK_STREAM:SOCK_DGRAM, command == 2?IPPROTO_TCP:IPPROTO_UDP)) == INVALID_SOCKET) {RETURN (11);} if ((param->remsock=so._socket(SASOCK(&param->req), command == 2? SOCK_STREAM:SOCK_DGRAM, command == 2?IPPROTO_TCP:IPPROTO_UDP)) == INVALID_SOCKET) {RETURN (11);}
param->operation = command == 2?BIND:UDPASSOC; param->operation = command == 2?BIND:UDPASSOC;
@ -218,7 +218,7 @@ fflush(stderr);
param->ctrlsock = param->clisock; param->ctrlsock = param->clisock;
param->clisock = so._socket(SASOCK(&param->sincr), SOCK_DGRAM, IPPROTO_UDP); param->clisock = so._socket(SASOCK(&param->sincr), SOCK_DGRAM, IPPROTO_UDP);
if(param->clisock == INVALID_SOCKET) {RETURN(11);} if(param->clisock == INVALID_SOCKET) {RETURN(11);}
memcpy(&sin, &param->sincl, sizeof(&sin)); sin = param->sincl;
*SAPORT(&sin) = 0; *SAPORT(&sin) = 0;
if(so._bind(param->clisock,(struct sockaddr *)&sin,SASIZE(&sin))) {RETURN (12);} if(so._bind(param->clisock,(struct sockaddr *)&sin,SASIZE(&sin))) {RETURN (12);}
#if SOCKSTRACE > 0 #if SOCKSTRACE > 0
@ -328,7 +328,7 @@ fflush(stderr);
param->res = sockmap(param, conf.timeouts[CONNECTION_S]); param->res = sockmap(param, conf.timeouts[CONNECTION_S]);
break; break;
case 3: case 3:
memcpy(&param->sinsr, &param->req, sizeof(param->sinsr)); param->sinsr = param->req;
myfree(buf); myfree(buf);
if(!(buf = myalloc(LARGEBUFSIZE))) {RETURN(21);} if(!(buf = myalloc(LARGEBUFSIZE))) {RETURN(21);}