Bläddra i källkod

Replace memcpy with assignment where appropriate

z3APA3A 10 år sedan
förälder
incheckning
13a7d6be11
8 ändrade filer med 45 tillägg och 41 borttagningar
  1. 1 1
      src/3proxy.c
  2. 17 16
      src/auth.c
  3. 2 2
      src/common.c
  4. 2 1
      src/conf.c
  5. 1 1
      src/dnspr.c
  6. 1 1
      src/ftp.c
  7. 15 13
      src/proxymain.c
  8. 6 6
      src/socks.c

+ 1 - 1
src/3proxy.c

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

+ 17 - 16
src/auth.c

@@ -242,7 +242,7 @@ int handleredirect(struct clientparam * param, struct ace * acentry){
 		}
 		if(!connected){
 			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)){
 				if(cur->extuser){
@@ -280,12 +280,12 @@ int handleredirect(struct clientparam * param, struct ace * acentry){
 			}
 			else if(!*SAPORT(&cur->addr) && !SAISNULL(&cur->addr)) {
 				unsigned short port = *SAPORT(&param->sinsr);
-				memcpy(&param->sinsr, &cur->addr, SASIZE(&cur->addr)); 
+				param->sinsr = cur->addr;
 				*SAPORT(&param->sinsr) = port;
 			}
 			else if(SAISNULL(&cur->addr) && *SAPORT(&cur->addr)) *SAPORT(&param->sinsr) = *SAPORT(&cur->addr);
 			else {
-				memcpy(&param->sinsr, &cur->addr, SASIZE(&cur->addr)); 
+				param->sinsr = cur->addr;
 			}
 
 			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)) {
 					continue;
 				}
-				memcpy(&dup, acentry, sizeof(struct ace));
+				dup = *acentry;
 				return handleredirect(param, &dup);
 			}
 			return acentry->action;
@@ -700,7 +700,7 @@ int doauth(struct clientparam * param){
 							ac->password = mystrdup(param->password);
 							myfree(tmp);
 						}
-						memcpy(&ac->sa, &param->sincr, SASIZE(&param->sincr));
+						ac->sa = param->sincr;
 						break;
 					}
 				}
@@ -709,7 +709,7 @@ int doauth(struct clientparam * param){
 					if(ac){
 						ac->expires = conf.time + conf.authcachetime;
 						ac->username = mystrdup(param->username);
-						memcpy(&ac->sa, &param->sincr, SASIZE(&param->sincr));
+						ac->sa = param->sincr;
 						ac->password = NULL;
 						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;
 #ifndef NOIPV6
 		struct sockaddr_in6 addr;
+		struct sockaddr_in6 *sinsr, *sinsl;
 #else
 		struct sockaddr_in addr;
+		struct sockaddr_in *sinsr, *sinsl;
 #endif
-		struct sockaddr *sinsr, *sinsl;
 		int usetcp = 0;
 		unsigned short serial = 1;
 
 		buf = b+2;
 
-		sinsl = (param && !makeauth)? (struct sockaddr *)&param->sinsl : (struct sockaddr *)&addr;
-		sinsr = (param && !makeauth)? (struct sockaddr *)&param->sinsr : (struct sockaddr *)&addr;
+		sinsl = (param && !makeauth)? &param->sinsl : &addr;
+		sinsr = (param && !makeauth)? &param->sinsr : &addr;
 		memset(sinsl, 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);
 		}
 		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._closesocket(sock);
 			break;
 		}
 		if(makeauth && !SAISNULL(&authnserver.addr)){
-			memcpy(sinsr, &authnserver.addr, sizeof(authnserver.addr));
+			*sinsr = authnserver.addr;
 		}
 		else {
-			memcpy(sinsr, &nservers[i].addr, sizeof(nservers[i].addr));
+			*sinsr = nservers[i].addr;
 		}
 		if(usetcp){
-			if(so._connect(sock,sinsr,SASIZE(sinsr))) {
+			if(so._connect(sock,(struct sockaddr *)sinsr,SASIZE(sinsr))) {
 				so._shutdown(sock, SHUT_RDWR);
 				so._closesocket(sock);
 				break;
@@ -1110,13 +1111,13 @@ unsigned long udpresolve(int af, unsigned char * name, unsigned char * value, un
 			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._closesocket(sock);
 			continue;
 		}
 		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._closesocket(sock);
 		if(len <= 13) {
@@ -1128,7 +1129,7 @@ unsigned long udpresolve(int af, unsigned char * name, unsigned char * value, un
 			us = ntohs(*(unsigned short*)buf);
 			len-=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;
 			}
 		}

+ 2 - 2
src/common.c

@@ -676,10 +676,10 @@ int doconnect(struct clientparam * param){
 
 	if(SAISNULL(&param->sinsl)){
 #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
 #endif
-			memcpy(&param->sinsl, &param->srv->extsa, sizeof(param->srv->extsa));
+			param->sinsl = param->srv->extsa;
 		*SAPORT(&param->sinsl) = 0;
 	}
 	if(so._bind(param->remsock, (struct sockaddr*)&param->sinsl, SASIZE(&param->sinsl))==-1) {

+ 2 - 1
src/conf.c

@@ -274,7 +274,8 @@ static int h_external(int argc, unsigned char ** argv){
 	memset(&sa6, 0, sizeof(sa6));
 	res = getip46(46, argv[1], (struct sockaddr *)&sa6);
 	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
 	res = getip46(46, argv[1], (struct sockaddr *)&conf.extsa);
 	if(!res) return 1; 

+ 1 - 1
src/dnspr.c

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

+ 1 - 1
src/ftp.c

@@ -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;
 	rem = param->remsock;
 	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));
 	i = param->operation;
 	param->operation = FTP_DATA;

+ 15 - 13
src/proxymain.c

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

+ 6 - 6
src/socks.c

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