mirror of
				https://github.com/3proxy/3proxy.git
				synced 2025-11-04 07:42:39 +08:00 
			
		
		
		
	fix type warnings
This commit is contained in:
		
							parent
							
								
									1f7a33d5ab
								
							
						
					
					
						commit
						a0da9c97e8
					
				
							
								
								
									
										16
									
								
								src/auth.c
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								src/auth.c
									
									
									
									
									
								
							@ -10,7 +10,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int clientnegotiate(struct chain * redir, struct clientparam * param, struct sockaddr * addr, char * hostname){
 | 
					int clientnegotiate(struct chain * redir, struct clientparam * param, struct sockaddr * addr, char * hostname){
 | 
				
			||||||
	unsigned char *buf;
 | 
						char *buf;
 | 
				
			||||||
	char *username;
 | 
						char *username;
 | 
				
			||||||
	int res;
 | 
						int res;
 | 
				
			||||||
	int len=0;
 | 
						int len=0;
 | 
				
			||||||
@ -393,8 +393,8 @@ int ACLmatches(struct ace* acentry, struct clientparam * param){
 | 
				
			|||||||
					break;
 | 
										break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					case 2:
 | 
										case 2:
 | 
				
			||||||
					lname = strlen((char *)hstentry->name);
 | 
										lname = (int)strlen((char *)hstentry->name);
 | 
				
			||||||
					lhost = strlen((char *)param->hostname);
 | 
										lhost = (int)strlen((char *)param->hostname);
 | 
				
			||||||
					if(lhost > lname){
 | 
										if(lhost > lname){
 | 
				
			||||||
						if(!strncasecmp((char *)param->hostname + (lhost - lname),
 | 
											if(!strncasecmp((char *)param->hostname + (lhost - lname),
 | 
				
			||||||
							(char *)hstentry->name,
 | 
												(char *)hstentry->name,
 | 
				
			||||||
@ -1170,7 +1170,7 @@ unsigned long udpresolve(int af, char * name, char * value, unsigned *retttl, st
 | 
				
			|||||||
	for(i=0; i<n; i++){
 | 
						for(i=0; i<n; i++){
 | 
				
			||||||
		unsigned short nq, na;
 | 
							unsigned short nq, na;
 | 
				
			||||||
		char b[4098], *s1, *s2;
 | 
							char b[4098], *s1, *s2;
 | 
				
			||||||
		unsigned char *buf;
 | 
							char *buf;
 | 
				
			||||||
		int j, k, len, flen;
 | 
							int j, k, len, flen;
 | 
				
			||||||
		SOCKET sock;
 | 
							SOCKET sock;
 | 
				
			||||||
		unsigned ttl;
 | 
							unsigned ttl;
 | 
				
			||||||
@ -1184,7 +1184,7 @@ unsigned long udpresolve(int af, char * name, char * value, unsigned *retttl, st
 | 
				
			|||||||
		int usetcp = 0;
 | 
							int usetcp = 0;
 | 
				
			||||||
		unsigned short serial = 1;
 | 
							unsigned short serial = 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		buf = (unsigned char*)b+2;
 | 
							buf = b+2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		sinsl = (param && !makeauth)? ¶m->sinsl : &addr;
 | 
							sinsl = (param && !makeauth)? ¶m->sinsl : &addr;
 | 
				
			||||||
		sinsr = (param && !makeauth)? ¶m->sinsr : &addr;
 | 
							sinsr = (param && !makeauth)? ¶m->sinsr : &addr;
 | 
				
			||||||
@ -1221,11 +1221,11 @@ unsigned long udpresolve(int af, char * name, char * value, unsigned *retttl, st
 | 
				
			|||||||
#ifdef TCP_NODELAY
 | 
					#ifdef TCP_NODELAY
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				int opt = 1;
 | 
									int opt = 1;
 | 
				
			||||||
				setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, (char *)&opt, sizeof(opt));
 | 
									setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, (void *)&opt, sizeof(opt));
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		len = (int)strlen((char *)name);
 | 
							len = (int)strlen(name);
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		serial = myrand(name,len);
 | 
							serial = myrand(name,len);
 | 
				
			||||||
		*(unsigned short*)buf = serial; /* query id */
 | 
							*(unsigned short*)buf = serial; /* query id */
 | 
				
			||||||
@ -1242,7 +1242,7 @@ unsigned long udpresolve(int af, char * name, char * value, unsigned *retttl, st
 | 
				
			|||||||
		memcpy(buf + 13, name, len);
 | 
							memcpy(buf + 13, name, len);
 | 
				
			||||||
		len += 13;
 | 
							len += 13;
 | 
				
			||||||
		buf[len] = 0;
 | 
							buf[len] = 0;
 | 
				
			||||||
		for(s2 = buf + 12; (s1 = (char *)strchr((char *)s2 + 1, '.')); s2 = s1)*s2 = (char)((s1 - s2) - 1);
 | 
							for(s2 = buf + 12; (s1 = strchr(s2 + 1, '.')); s2 = s1)*s2 = (char)(unsigned char)((s1 - s2) - 1);
 | 
				
			||||||
		*s2 = (len - (int)(s2 - buf)) - 1;
 | 
							*s2 = (len - (int)(s2 - buf)) - 1;
 | 
				
			||||||
		len++;
 | 
							len++;
 | 
				
			||||||
		buf[len++] = 0;
 | 
							buf[len++] = 0;
 | 
				
			||||||
 | 
				
			|||||||
@ -194,7 +194,7 @@ static int calc_replydigest(char *packet, char *original, const char *secret, in
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	memcpy(calc_vector, packet + 4, AUTH_VECTOR_LEN);
 | 
						memcpy(calc_vector, packet + 4, AUTH_VECTOR_LEN);
 | 
				
			||||||
	memcpy(packet + 4, original, AUTH_VECTOR_LEN);
 | 
						memcpy(packet + 4, original, AUTH_VECTOR_LEN);
 | 
				
			||||||
	secretlen = strlen(secret);
 | 
						secretlen = (int)strlen(secret);
 | 
				
			||||||
	memcpy(packet + len, secret, secretlen);
 | 
						memcpy(packet + len, secret, secretlen);
 | 
				
			||||||
	md5_calc(calc_digest, (u_char *)packet, len + secretlen);
 | 
						md5_calc(calc_digest, (u_char *)packet, len + secretlen);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -212,7 +212,7 @@ static int rad_pwencode(char *passwd, int *pwlen, const char *secret, const char
 | 
				
			|||||||
	int	i, n, secretlen;
 | 
						int	i, n, secretlen;
 | 
				
			||||||
	int	len;
 | 
						int	len;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	len = strlen(passwd);
 | 
						len = (int)strlen(passwd);
 | 
				
			||||||
	if (len > 128) len = 128;
 | 
						if (len > 128) len = 128;
 | 
				
			||||||
	*pwlen = len;
 | 
						*pwlen = len;
 | 
				
			||||||
	if (len % AUTH_PASS_LEN != 0) {
 | 
						if (len % AUTH_PASS_LEN != 0) {
 | 
				
			||||||
@ -222,7 +222,7 @@ static int rad_pwencode(char *passwd, int *pwlen, const char *secret, const char
 | 
				
			|||||||
		len = *pwlen = i;
 | 
							len = *pwlen = i;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	secretlen = strlen(secret);
 | 
						secretlen = (int)strlen(secret);
 | 
				
			||||||
	memcpy(buffer, secret, secretlen);
 | 
						memcpy(buffer, secret, secretlen);
 | 
				
			||||||
	memcpy(buffer + secretlen, vector, AUTH_VECTOR_LEN);
 | 
						memcpy(buffer + secretlen, vector, AUTH_VECTOR_LEN);
 | 
				
			||||||
	md5_calc((u_char *)digest, buffer, secretlen + AUTH_VECTOR_LEN);
 | 
						md5_calc((u_char *)digest, buffer, secretlen + AUTH_VECTOR_LEN);
 | 
				
			||||||
@ -325,7 +325,7 @@ static int radbuf(struct clientparam * param, unsigned char * inbuf, int auth, i
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	/* Acct-Session-Id */
 | 
						/* Acct-Session-Id */
 | 
				
			||||||
	sprintf(buf, "%u.%u.%u", (unsigned)param->time_start, (unsigned)param->msec_start, (unsigned)param->threadid);
 | 
						sprintf(buf, "%u.%u.%u", (unsigned)param->time_start, (unsigned)param->msec_start, (unsigned)param->threadid);
 | 
				
			||||||
        len = strlen(buf);
 | 
					        len = (int)strlen(buf);
 | 
				
			||||||
	*ptr++ =  PW_ACCT_SESSION_ID;
 | 
						*ptr++ =  PW_ACCT_SESSION_ID;
 | 
				
			||||||
	*ptr++ = 2+len;
 | 
						*ptr++ = 2+len;
 | 
				
			||||||
	memcpy(ptr, buf, len);
 | 
						memcpy(ptr, buf, len);
 | 
				
			||||||
@ -365,7 +365,7 @@ static int radbuf(struct clientparam * param, unsigned char * inbuf, int auth, i
 | 
				
			|||||||
	/* NAS-Identifier */
 | 
						/* NAS-Identifier */
 | 
				
			||||||
	if(conf.stringtable){
 | 
						if(conf.stringtable){
 | 
				
			||||||
		*ptr++ = PW_NAS_IDENTIFIER;
 | 
							*ptr++ = PW_NAS_IDENTIFIER;
 | 
				
			||||||
		len = strlen(conf.stringtable[SERVICES+param->service]);
 | 
							len = (int)strlen(conf.stringtable[SERVICES+param->service]);
 | 
				
			||||||
		*ptr++ = (2 + len);
 | 
							*ptr++ = (2 + len);
 | 
				
			||||||
		memcpy(ptr, conf.stringtable[SERVICES+param->service], len);
 | 
							memcpy(ptr, conf.stringtable[SERVICES+param->service], len);
 | 
				
			||||||
		ptr += len;
 | 
							ptr += len;
 | 
				
			||||||
@ -390,7 +390,7 @@ static int radbuf(struct clientparam * param, unsigned char * inbuf, int auth, i
 | 
				
			|||||||
	/* Called-Station-ID */
 | 
						/* Called-Station-ID */
 | 
				
			||||||
	if(param->hostname){
 | 
						if(param->hostname){
 | 
				
			||||||
		*ptr++ = PW_CALLED_STATION_ID;
 | 
							*ptr++ = PW_CALLED_STATION_ID;
 | 
				
			||||||
		len = strlen(param->hostname);
 | 
							len = (int)strlen(param->hostname);
 | 
				
			||||||
		*ptr++ = (2 + len);
 | 
							*ptr++ = (2 + len);
 | 
				
			||||||
		memcpy(ptr, param->hostname, len);
 | 
							memcpy(ptr, param->hostname, len);
 | 
				
			||||||
		ptr += len;
 | 
							ptr += len;
 | 
				
			||||||
@ -432,7 +432,7 @@ static int radbuf(struct clientparam * param, unsigned char * inbuf, int auth, i
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	/* Username */
 | 
						/* Username */
 | 
				
			||||||
	if(param->username){
 | 
						if(param->username){
 | 
				
			||||||
	    len = strlen(param->username);
 | 
						    len = (int)strlen(param->username);
 | 
				
			||||||
	    if(len>128)len=128;
 | 
						    if(len>128)len=128;
 | 
				
			||||||
	    *ptr++ = PW_USER_NAME;
 | 
						    *ptr++ = PW_USER_NAME;
 | 
				
			||||||
	    *ptr++ = len + 2;
 | 
						    *ptr++ = len + 2;
 | 
				
			||||||
@ -475,7 +475,7 @@ static int radbuf(struct clientparam * param, unsigned char * inbuf, int auth, i
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	if(auth && param->password){
 | 
						if(auth && param->password){
 | 
				
			||||||
    	    len = strlen(param->password);
 | 
					    	    len = (int)strlen(param->password);
 | 
				
			||||||
	    if(len > 128) len = 128;
 | 
						    if(len > 128) len = 128;
 | 
				
			||||||
	    *ptr++ = PW_PASSWORD;
 | 
						    *ptr++ = PW_PASSWORD;
 | 
				
			||||||
	    ptr++;
 | 
						    ptr++;
 | 
				
			||||||
@ -493,7 +493,7 @@ static int radbuf(struct clientparam * param, unsigned char * inbuf, int auth, i
 | 
				
			|||||||
	packet.length = htons(total_length);
 | 
						packet.length = htons(total_length);
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	if(!auth){
 | 
						if(!auth){
 | 
				
			||||||
		len = strlen(radiussecret);
 | 
							len = (int)strlen(radiussecret);
 | 
				
			||||||
		memcpy(ptr,radiussecret,len);
 | 
							memcpy(ptr,radiussecret,len);
 | 
				
			||||||
		md5_calc(packet.vector, (u_char *)&packet, total_length + len);
 | 
							md5_calc(packet.vector, (u_char *)&packet, total_length + len);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
				
			|||||||
@ -10,7 +10,7 @@
 | 
				
			|||||||
static const char base64digits[] =
 | 
					static const char base64digits[] =
 | 
				
			||||||
   "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
 | 
					   "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define BAD 255
 | 
					#define BAD -1
 | 
				
			||||||
static const char base64val[] = {
 | 
					static const char base64val[] = {
 | 
				
			||||||
    BAD,BAD,BAD,BAD, BAD,BAD,BAD,BAD, BAD,BAD,BAD,BAD, BAD,BAD,BAD,BAD,
 | 
					    BAD,BAD,BAD,BAD, BAD,BAD,BAD,BAD, BAD,BAD,BAD,BAD, BAD,BAD,BAD,BAD,
 | 
				
			||||||
    BAD,BAD,BAD,BAD, BAD,BAD,BAD,BAD, BAD,BAD,BAD,BAD, BAD,BAD,BAD,BAD,
 | 
					    BAD,BAD,BAD,BAD, BAD,BAD,BAD,BAD, BAD,BAD,BAD,BAD, BAD,BAD,BAD,BAD,
 | 
				
			||||||
@ -23,7 +23,7 @@ static const char base64val[] = {
 | 
				
			|||||||
};
 | 
					};
 | 
				
			||||||
#define DECODE64(c)  ((c > 32 && c<127)? base64val[(int)c] : BAD)
 | 
					#define DECODE64(c)  ((c > 32 && c<127)? base64val[(int)c] : BAD)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
unsigned char* en64 (const char *in, char *out, int inlen)
 | 
					char* en64 (const char *in, char *out, int inlen)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    for (; inlen > 0; inlen -= 3, in+=3)
 | 
					    for (; inlen > 0; inlen -= 3, in+=3)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -40,7 +40,7 @@ unsigned char* en64 (const char *in, char *out, int inlen)
 | 
				
			|||||||
int de64 (const char *in, char *out, int maxlen)
 | 
					int de64 (const char *in, char *out, int maxlen)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    int len = 0;
 | 
					    int len = 0;
 | 
				
			||||||
    register unsigned char digit1, digit2, digit3, digit4;
 | 
					    register char digit1, digit2, digit3, digit4;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (in[0] == '+' && in[1] == ' ')
 | 
					    if (in[0] == '+' && in[1] == ' ')
 | 
				
			||||||
	in += 2;
 | 
						in += 2;
 | 
				
			||||||
 | 
				
			|||||||
@ -701,7 +701,7 @@ int scanipl(char *arg, struct iplist *dst){
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
			for(i = addrlen; i>(nbytes + (nbits > 0)); i--){
 | 
								for(i = addrlen; i>(nbytes + (nbits > 0)); i--){
 | 
				
			||||||
				((char *)&dst->ip_from)[i-1] = 0x00;
 | 
									((char *)&dst->ip_from)[i-1] = 0x00;
 | 
				
			||||||
				((char *)&dst->ip_to)[i-1] = 0xff;
 | 
									((char *)&dst->ip_to)[i-1] = (char)(unsigned char)0xff;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			for(;nbits;nbits--){
 | 
								for(;nbits;nbits--){
 | 
				
			||||||
				((char *)&dst->ip_from)[nbytes] &= ~(0x01<<(nbits-1));
 | 
									((char *)&dst->ip_from)[nbytes] &= ~(0x01<<(nbits-1));
 | 
				
			||||||
 | 
				
			|||||||
@ -77,7 +77,7 @@ static void pr_sa(struct node *node, CBFUNC cbf, void*cb){
 | 
				
			|||||||
	buf[1] = 0;
 | 
						buf[1] = 0;
 | 
				
			||||||
	inet_ntop(*SAFAMILY(node->value), SAADDR(node->value), buf+1, sizeof(buf)-10);
 | 
						inet_ntop(*SAFAMILY(node->value), SAADDR(node->value), buf+1, sizeof(buf)-10);
 | 
				
			||||||
	sprintf(buf + strlen(buf), "]:%hu", (unsigned short)*SAPORT(node->value));
 | 
						sprintf(buf + strlen(buf), "]:%hu", (unsigned short)*SAPORT(node->value));
 | 
				
			||||||
	if(node->value)(*cbf)(cb, buf, strlen(buf));
 | 
						if(node->value)(*cbf)(cb, buf, (int)strlen(buf));
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -27,7 +27,7 @@ void * dnsprchild(struct clientparam* param) {
 | 
				
			|||||||
 int len;
 | 
					 int len;
 | 
				
			||||||
 unsigned type=0;
 | 
					 unsigned type=0;
 | 
				
			||||||
 unsigned ttl;
 | 
					 unsigned ttl;
 | 
				
			||||||
 unsigned char addr[16];
 | 
					 char addr[16];
 | 
				
			||||||
#ifdef _WIN32
 | 
					#ifdef _WIN32
 | 
				
			||||||
	unsigned long ul = 1;
 | 
						unsigned long ul = 1;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@ -83,7 +83,7 @@ void * dnsprchild(struct clientparam* param) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 type = ((unsigned)buf[len+1])*256 + (unsigned)buf[len+2];
 | 
					 type = ((unsigned)buf[len+1])*256 + (unsigned)buf[len+2];
 | 
				
			||||||
 if((type==0x01 || type==0x1c) && !param->srv->singlepacket){
 | 
					 if((type==0x01 || type==0x1c) && !param->srv->singlepacket){
 | 
				
			||||||
 	ip = udpresolve((type==0x1c)?AF_INET6:AF_INET, (unsigned char *)host, addr, &ttl, param, 0);
 | 
					 	ip = udpresolve((type==0x1c)?AF_INET6:AF_INET, host, addr, &ttl, param, 0);
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 len+=5;
 | 
					 len+=5;
 | 
				
			||||||
@ -170,7 +170,7 @@ void * dnsprchild(struct clientparam* param) {
 | 
				
			|||||||
		if(us > 4096) RETURN(833);
 | 
							if(us > 4096) RETURN(833);
 | 
				
			||||||
		buf += 2;
 | 
							buf += 2;
 | 
				
			||||||
		len -= 2;
 | 
							len -= 2;
 | 
				
			||||||
		if(len < us) len += sockgetlinebuf(param, SERVER, buf+len, us - len, 0, conf.timeouts[SINGLEBYTE_L]);
 | 
							if(len < us) len += sockgetlinebuf(param, SERVER, (char *)buf+len, us - len, 0, conf.timeouts[SINGLEBYTE_L]);
 | 
				
			||||||
		if(len != us) RETURN(832);
 | 
							if(len != us) RETURN(832);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if(buf[6] || buf[7]){
 | 
						if(buf[6] || buf[7]){
 | 
				
			||||||
@ -198,7 +198,7 @@ CLEANRET:
 | 
				
			|||||||
	if((ip && type == 0x01) || type == 0x1c){
 | 
						if((ip && type == 0x01) || type == 0x1c){
 | 
				
			||||||
		myinet_ntop(type == 0x01? AF_INET:AF_INET6, addr, (char *)buf+strlen((char *)buf), 64);
 | 
							myinet_ntop(type == 0x01? AF_INET:AF_INET6, addr, (char *)buf+strlen((char *)buf), 64);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	dolog(param, buf);
 | 
						dolog(param, (char *)buf);
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 if(bbuf)myfree(bbuf);
 | 
					 if(bbuf)myfree(bbuf);
 | 
				
			||||||
 if(host)myfree(host);
 | 
					 if(host)myfree(host);
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										14
									
								
								src/log.c
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								src/log.c
									
									
									
									
									
								
							@ -350,7 +350,7 @@ void dolog(struct clientparam * param, const char *s){
 | 
				
			|||||||
	static int init = 0;
 | 
						static int init = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if(!param || !param->srv){
 | 
						if(!param || !param->srv){
 | 
				
			||||||
		stdlog(s, strlen(s), &errlogger);
 | 
							stdlog(s, (int)strlen(s), &errlogger);
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if(conf.prelog)conf.prelog(param);
 | 
						if(conf.prelog)conf.prelog(param);
 | 
				
			||||||
@ -360,9 +360,9 @@ void dolog(struct clientparam * param, const char *s){
 | 
				
			|||||||
		if(!param->srv->log->logfunc) {
 | 
							if(!param->srv->log->logfunc) {
 | 
				
			||||||
			int slen =0, hlen=0, ulen=0;
 | 
								int slen =0, hlen=0, ulen=0;
 | 
				
			||||||
			
 | 
								
 | 
				
			||||||
			slen = s?strlen(s)+1 : 0;
 | 
								slen = s?(int)strlen(s)+1 : 0;
 | 
				
			||||||
			hlen = param->hostname? strlen(param->hostname)+1 : 0;
 | 
								hlen = param->hostname? (int)strlen(param->hostname)+1 : 0;
 | 
				
			||||||
			ulen = param->username? strlen(param->username)+1 : 0;
 | 
								ulen = param->username? (int)strlen(param->username)+1 : 0;
 | 
				
			||||||
			if(!(evt = malloc(sizeof(struct logevent) + slen + ulen + hlen))) return;
 | 
								if(!(evt = malloc(sizeof(struct logevent) + slen + ulen + hlen))) return;
 | 
				
			||||||
			evt->inbuf = 0;
 | 
								evt->inbuf = 0;
 | 
				
			||||||
			evt->param=param;
 | 
								evt->param=param;
 | 
				
			||||||
@ -502,7 +502,7 @@ char * dologname (char *buf,  int bufsize, char *name, const char *ext, ROTATION
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	ts = localtime(&t);
 | 
						ts = localtime(&t);
 | 
				
			||||||
	if(strchr((char *)name, '%')){
 | 
						if(strchr((char *)name, '%')){
 | 
				
			||||||
		dobuf2(&logparam, buf, bufsize - (ext?strlen(ext):0), NULL, NULL, ts, (char *)name);
 | 
							dobuf2(&logparam, buf, bufsize - (ext?(int)strlen(ext):0), NULL, NULL, ts, (char *)name);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	else switch(lt){
 | 
						else switch(lt){
 | 
				
			||||||
		case NONE:
 | 
							case NONE:
 | 
				
			||||||
@ -875,12 +875,12 @@ static void stdlogrotate(struct LOGGER *logger){
 | 
				
			|||||||
			strcat((char *)tmpbuf, " ");
 | 
								strcat((char *)tmpbuf, " ");
 | 
				
			||||||
			if(!strcmp((char *)conf.archiver[i], "%A")){
 | 
								if(!strcmp((char *)conf.archiver[i], "%A")){
 | 
				
			||||||
				strcat((char *)tmpbuf, "\"");
 | 
									strcat((char *)tmpbuf, "\"");
 | 
				
			||||||
				dologname (tmpbuf + strlen((char *)tmpbuf), sizeof(tmpbuf) - (strlen((char *)tmpbuf) + 1), logger->selector, conf.archiver[1], logger->rotate, (logger->rotated - t));
 | 
									dologname (tmpbuf + strlen((char *)tmpbuf), (int)(sizeof(tmpbuf) - (strlen((char *)tmpbuf) + 1)), logger->selector, conf.archiver[1], logger->rotate, (logger->rotated - t));
 | 
				
			||||||
				strcat((char *)tmpbuf, "\"");
 | 
									strcat((char *)tmpbuf, "\"");
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			else if(!strcmp((char *)conf.archiver[i], "%F")){
 | 
								else if(!strcmp((char *)conf.archiver[i], "%F")){
 | 
				
			||||||
				strcat((char *)tmpbuf, "\"");
 | 
									strcat((char *)tmpbuf, "\"");
 | 
				
			||||||
				dologname (tmpbuf+strlen((char *)tmpbuf), sizeof(tmpbuf) - (strlen((char *)tmpbuf) + 1), logger->selector, NULL, logger->rotate, (logger->rotated-t));
 | 
									dologname (tmpbuf+strlen((char *)tmpbuf), (int)(sizeof(tmpbuf) - (strlen((char *)tmpbuf) + 1)), logger->selector, NULL, logger->rotate, (logger->rotated-t));
 | 
				
			||||||
				strcat((char *)tmpbuf, "\"");
 | 
									strcat((char *)tmpbuf, "\"");
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			else
 | 
								else
 | 
				
			||||||
 | 
				
			|||||||
@ -42,7 +42,7 @@ char * ntpwdhash (char *szHash, const char *szPassword, int ctohex)
 | 
				
			|||||||
	 *	NT passwords are unicode.  Convert plain text password
 | 
						 *	NT passwords are unicode.  Convert plain text password
 | 
				
			||||||
	 *	to unicode by inserting a zero every other byte
 | 
						 *	to unicode by inserting a zero every other byte
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	nPasswordLen = (int)strlen((char *)szPassword);
 | 
						nPasswordLen = (int)strlen(szPassword);
 | 
				
			||||||
	if(nPasswordLen > 255)nPasswordLen = 255;
 | 
						if(nPasswordLen > 255)nPasswordLen = 255;
 | 
				
			||||||
	for (i = 0; i < nPasswordLen; i++) {
 | 
						for (i = 0; i < nPasswordLen; i++) {
 | 
				
			||||||
		szUnicodePass[i << 1] = szPassword[i];
 | 
							szUnicodePass[i << 1] = szPassword[i];
 | 
				
			||||||
@ -51,8 +51,8 @@ char * ntpwdhash (char *szHash, const char *szPassword, int ctohex)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	/* Encrypt Unicode password to a 16-byte MD4 hash */
 | 
						/* Encrypt Unicode password to a 16-byte MD4 hash */
 | 
				
			||||||
	MD4Init(&ctx);
 | 
						MD4Init(&ctx);
 | 
				
			||||||
	MD4Update(&ctx, szUnicodePass, (nPasswordLen<<1));
 | 
						MD4Update(&ctx, (unsigned char*)szUnicodePass, (nPasswordLen<<1));
 | 
				
			||||||
	MD4Final(szUnicodePass, &ctx);
 | 
						MD4Final((unsigned char*)szUnicodePass, &ctx);
 | 
				
			||||||
	if (ctohex){
 | 
						if (ctohex){
 | 
				
			||||||
		tohex(szUnicodePass, szHash, 16);
 | 
							tohex(szUnicodePass, szHash, 16);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -64,8 +64,8 @@ char * ntpwdhash (char *szHash, const char *szPassword, int ctohex)
 | 
				
			|||||||
char * mycrypt(const char *pw, const char *salt, char *passwd){
 | 
					char * mycrypt(const char *pw, const char *salt, char *passwd){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 const char *ep;
 | 
					 const char *ep;
 | 
				
			||||||
 if(salt[0] == '$' && salt[1] == '1' && salt[2] == '$' && (ep = (char *)strchr((char *)salt+3, '$'))) {
 | 
					 if(salt[0] == '$' && salt[1] == '1' && salt[2] == '$' && (ep = strchr(salt+3, '$'))) {
 | 
				
			||||||
	static char	*magic = (char *)"$1$";	
 | 
						static char	*magic = "$1$";	
 | 
				
			||||||
	char  *p;
 | 
						char  *p;
 | 
				
			||||||
	const char *sp;
 | 
						const char *sp;
 | 
				
			||||||
	char	final[MD5_SIZE];
 | 
						char	final[MD5_SIZE];
 | 
				
			||||||
@ -82,39 +82,39 @@ char * mycrypt(const char *pw, const char *salt, char *passwd){
 | 
				
			|||||||
	MD5Init(&ctx);
 | 
						MD5Init(&ctx);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* The password first, since that is what is most unknown */
 | 
						/* The password first, since that is what is most unknown */
 | 
				
			||||||
	MD5Update(&ctx,pw,strlen((char *)pw));
 | 
						MD5Update(&ctx,(unsigned char*)pw,strlen(pw));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Then our magic string */
 | 
						/* Then our magic string */
 | 
				
			||||||
	MD5Update(&ctx,magic,strlen((char *)magic));
 | 
						MD5Update(&ctx,(unsigned char*)magic,strlen(magic));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Then the raw salt */
 | 
						/* Then the raw salt */
 | 
				
			||||||
	MD5Update(&ctx,sp,sl);
 | 
						MD5Update(&ctx,(unsigned char*)sp,sl);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Then just as many characters of the MD5(pw,salt,pw) */
 | 
						/* Then just as many characters of the MD5(pw,salt,pw) */
 | 
				
			||||||
	MD5Init(&ctx1);
 | 
						MD5Init(&ctx1);
 | 
				
			||||||
	MD5Update(&ctx1,pw,strlen((char *)pw));
 | 
						MD5Update(&ctx1,(unsigned char*)pw,strlen(pw));
 | 
				
			||||||
	MD5Update(&ctx1,sp,sl);
 | 
						MD5Update(&ctx1,(unsigned char*)sp,sl);
 | 
				
			||||||
	MD5Update(&ctx1,pw,strlen((char *)pw));
 | 
						MD5Update(&ctx1,(unsigned char*)pw,strlen(pw));
 | 
				
			||||||
	MD5Final(final,&ctx1);
 | 
						MD5Final((unsigned char*)final,&ctx1);
 | 
				
			||||||
	for(pl = (int)strlen((char *)pw); pl > 0; pl -= MD5_SIZE)
 | 
						for(pl = (int)strlen(pw); pl > 0; pl -= MD5_SIZE)
 | 
				
			||||||
		MD5Update(&ctx,final,pl>MD5_SIZE ? MD5_SIZE : pl);
 | 
							MD5Update(&ctx,(unsigned char*)final,pl>MD5_SIZE ? MD5_SIZE : pl);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Don't leave anything around in vm they could use. */
 | 
						/* Don't leave anything around in vm they could use. */
 | 
				
			||||||
	memset(final,0,sizeof final);
 | 
						memset(final,0,sizeof final);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Then something really weird... */
 | 
						/* Then something really weird... */
 | 
				
			||||||
	for (i = (int)strlen((char *)pw); i ; i >>= 1)
 | 
						for (i = (int)strlen(pw); i ; i >>= 1)
 | 
				
			||||||
		if(i&1)
 | 
							if(i&1)
 | 
				
			||||||
		    MD5Update(&ctx, final, 1);
 | 
							    MD5Update(&ctx, (unsigned char*)final, 1);
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
		    MD5Update(&ctx, pw, 1);
 | 
							    MD5Update(&ctx, (unsigned char*)pw, 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Now make the output string */
 | 
						/* Now make the output string */
 | 
				
			||||||
	strcpy((char *)passwd,(char *)magic);
 | 
						strcpy(passwd,magic);
 | 
				
			||||||
	strncat((char *)passwd,(char *)sp,sl);
 | 
						strncat(passwd,sp,sl);
 | 
				
			||||||
	strcat((char *)passwd,"$");
 | 
						strcat(passwd,"$");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	MD5Final(final,&ctx);
 | 
						MD5Final((unsigned char*)final,&ctx);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/*
 | 
						/*
 | 
				
			||||||
	 * and now, just to make sure things don't run too fast
 | 
						 * and now, just to make sure things don't run too fast
 | 
				
			||||||
@ -124,24 +124,24 @@ char * mycrypt(const char *pw, const char *salt, char *passwd){
 | 
				
			|||||||
	for(i=0;i<1000;i++) {
 | 
						for(i=0;i<1000;i++) {
 | 
				
			||||||
		MD5Init(&ctx1);
 | 
							MD5Init(&ctx1);
 | 
				
			||||||
		if(i & 1)
 | 
							if(i & 1)
 | 
				
			||||||
			MD5Update(&ctx1,pw,strlen((char *)pw));
 | 
								MD5Update(&ctx1,(unsigned char*)pw,strlen(pw));
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
			MD5Update(&ctx1,final,MD5_SIZE);
 | 
								MD5Update(&ctx1,(unsigned char*)final,MD5_SIZE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if(i % 3)
 | 
							if(i % 3)
 | 
				
			||||||
			MD5Update(&ctx1,sp,sl);
 | 
								MD5Update(&ctx1,(unsigned char*)sp,sl);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if(i % 7)
 | 
							if(i % 7)
 | 
				
			||||||
			MD5Update(&ctx1,pw,strlen((char *)pw));
 | 
								MD5Update(&ctx1,(unsigned char*)pw,strlen(pw));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if(i & 1)
 | 
							if(i & 1)
 | 
				
			||||||
			MD5Update(&ctx1,final,MD5_SIZE);
 | 
								MD5Update(&ctx1,(unsigned char*)final,MD5_SIZE);
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
			MD5Update(&ctx1,pw,strlen((char *)pw));
 | 
								MD5Update(&ctx1,(unsigned char*)pw,strlen(pw));
 | 
				
			||||||
		MD5Final(final,&ctx1);
 | 
							MD5Final((unsigned char*)final,&ctx1);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	p = passwd + strlen((char *)passwd);
 | 
						p = passwd + strlen(passwd);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	l = (final[ 0]<<16) | (final[ 6]<<8) | final[12];
 | 
						l = (final[ 0]<<16) | (final[ 6]<<8) | final[12];
 | 
				
			||||||
	_crypt_to64(p,l,4); p += 4;
 | 
						_crypt_to64(p,l,4); p += 4;
 | 
				
			||||||
@ -185,12 +185,12 @@ int main(int argc, char* argv[]){
 | 
				
			|||||||
			return 1;
 | 
								return 1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if(argc == 2) {
 | 
						if(argc == 2) {
 | 
				
			||||||
		printf("NT:%s\n", ntpwdhash(buf, (char *)argv[1], 1));
 | 
							printf("NT:%s\n", ntpwdhash(buf, argv[1], 1));
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	else {
 | 
						else {
 | 
				
			||||||
		i = (int)strlen((char *)argv[1]);
 | 
							i = (int)strlen(argv[1]);
 | 
				
			||||||
		if (i > 64) argv[1][64] = 0;
 | 
							if (i > 64) argv[1][64] = 0;
 | 
				
			||||||
		sprintf((char *)buf, "$1$%s$", argv[1]);
 | 
							sprintf(buf, "$1$%s$", argv[1]);
 | 
				
			||||||
		printf("CR:%s\n", mycrypt(argv[2], buf, buf+256));
 | 
							printf("CR:%s\n", mycrypt(argv[2], buf, buf+256));
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
 | 
				
			|||||||
@ -159,7 +159,7 @@ void decodeurl(char *s, int allowcr){
 | 
				
			|||||||
		if(allowcr && u != '\r')*d++ = u;
 | 
							if(allowcr && u != '\r')*d++ = u;
 | 
				
			||||||
		else if (u != '\r' && u != '\n') {
 | 
							else if (u != '\r' && u != '\n') {
 | 
				
			||||||
			if (u == '\"' || u == '\\') *d++ = '\\';
 | 
								if (u == '\"' || u == '\\') *d++ = '\\';
 | 
				
			||||||
			else if (u == 255) *d++ = 255;
 | 
								else if (u == 255) *d++ = (char)(unsigned char)255;
 | 
				
			||||||
			*d++ = u;
 | 
								*d++ = u;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		s+=3;
 | 
							s+=3;
 | 
				
			||||||
@ -187,7 +187,7 @@ void file2url(char *sb, char *buf, unsigned bufsize, int * inbuf, int skip255){
 | 
				
			|||||||
		memcpy(buf+*inbuf, "%5C%22", 6);
 | 
							memcpy(buf+*inbuf, "%5C%22", 6);
 | 
				
			||||||
		(*inbuf)+=6;
 | 
							(*inbuf)+=6;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	else if(skip255 && *sb == 255 && *(sb+1) == 255) {
 | 
						else if(skip255 && *sb == (char)(unsigned char)255 && *(sb+1) == (char)(unsigned char)255) {
 | 
				
			||||||
		memcpy(buf+*inbuf, "%ff", 3);
 | 
							memcpy(buf+*inbuf, "%ff", 3);
 | 
				
			||||||
		(*inbuf)+=3;
 | 
							(*inbuf)+=3;
 | 
				
			||||||
		sb++;
 | 
							sb++;
 | 
				
			||||||
@ -780,7 +780,7 @@ for(;;){
 | 
				
			|||||||
 inbuf = 0;
 | 
					 inbuf = 0;
 | 
				
			||||||
#ifndef ANONYMOUS
 | 
					#ifndef ANONYMOUS
 | 
				
			||||||
 if(!anonymous){
 | 
					 if(!anonymous){
 | 
				
			||||||
		int len = strlen((char *)buf);
 | 
							int len = (int)strlen((char *)buf);
 | 
				
			||||||
		len += sprintf((char*)buf + len, "Forwarded: for=");
 | 
							len += sprintf((char*)buf + len, "Forwarded: for=");
 | 
				
			||||||
		if(*SAFAMILY(¶m->sincr) == AF_INET6) len += sprintf((char*)buf + len, "\"[");
 | 
							if(*SAFAMILY(¶m->sincr) == AF_INET6) len += sprintf((char*)buf + len, "\"[");
 | 
				
			||||||
		len += myinet_ntop(*SAFAMILY(¶m->sincr), SAADDR(¶m->sincr), (char *)buf + len, 128);
 | 
							len += myinet_ntop(*SAFAMILY(¶m->sincr), SAADDR(¶m->sincr), (char *)buf + len, 128);
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										18
									
								
								src/socks.c
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								src/socks.c
									
									
									
									
									
								
							@ -10,7 +10,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#define RETURN(xxx) { param->res = xxx; goto CLEANRET; }
 | 
					#define RETURN(xxx) { param->res = xxx; goto CLEANRET; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
unsigned char * commands[] = {(unsigned char *)"UNKNOWN", (unsigned char *)"CONNECT", (unsigned char *)"BIND", (unsigned char *)"UDPMAP"};
 | 
					char * commands[] = {"UNKNOWN", "CONNECT", "BIND", "UDPMAP"};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define BUFSIZE 1024
 | 
					#define BUFSIZE 1024
 | 
				
			||||||
#define LARGEBUFSIZE 67000
 | 
					#define LARGEBUFSIZE 67000
 | 
				
			||||||
@ -63,11 +63,11 @@ void * sockschild(struct clientparam* param) {
 | 
				
			|||||||
		if ((i = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_S], 0)) == EOF) {RETURN(451);}
 | 
							if ((i = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_S], 0)) == EOF) {RETURN(451);}
 | 
				
			||||||
		if (i && (unsigned)(res = sockgetlinebuf(param, CLIENT, buf, i, 0, conf.timeouts[STRING_S])) != i){RETURN(441);};
 | 
							if (i && (unsigned)(res = sockgetlinebuf(param, CLIENT, buf, i, 0, conf.timeouts[STRING_S])) != i){RETURN(441);};
 | 
				
			||||||
		buf[i] = 0;
 | 
							buf[i] = 0;
 | 
				
			||||||
		if(!param->username)param->username = (unsigned char *)mystrdup((char *)buf);
 | 
							if(!param->username)param->username = mystrdup(buf);
 | 
				
			||||||
		if ((i = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_S], 0)) == EOF) {RETURN(445);}
 | 
							if ((i = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_S], 0)) == EOF) {RETURN(445);}
 | 
				
			||||||
		if (i && (unsigned)(res = sockgetlinebuf(param, CLIENT, buf, i, 0, conf.timeouts[STRING_S])) != i){RETURN(441);};
 | 
							if (i && (unsigned)(res = sockgetlinebuf(param, CLIENT, buf, i, 0, conf.timeouts[STRING_S])) != i){RETURN(441);};
 | 
				
			||||||
		buf[i] = 0;
 | 
							buf[i] = 0;
 | 
				
			||||||
		if(!param->password)param->password = (unsigned char *)mystrdup((char *)buf);
 | 
							if(!param->password)param->password = mystrdup(buf);
 | 
				
			||||||
		buf[0] = 1;
 | 
							buf[0] = 1;
 | 
				
			||||||
		buf[1] = 0;
 | 
							buf[1] = 0;
 | 
				
			||||||
		if(socksend(param->clisock, buf, 2, conf.timeouts[STRING_S])!=2){RETURN(481);}
 | 
							if(socksend(param->clisock, buf, 2, conf.timeouts[STRING_S])!=2){RETURN(481);}
 | 
				
			||||||
@ -123,7 +123,7 @@ void * sockschild(struct clientparam* param) {
 | 
				
			|||||||
		if(command == 1 && SAISNULL(¶m->req)) {
 | 
							if(command == 1 && SAISNULL(¶m->req)) {
 | 
				
			||||||
			RETURN(431);
 | 
								RETURN(431);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		myinet_ntop(*SAFAMILY(¶m->sinsr), SAADDR(¶m->sinsr), (char *)buf, 64);
 | 
							myinet_ntop(*SAFAMILY(¶m->sinsr), SAADDR(¶m->sinsr), buf, 64);
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	case 3:
 | 
						case 3:
 | 
				
			||||||
		if ((size = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_S], 0)) == EOF) {RETURN(451);} /* nmethods */
 | 
							if ((size = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_S], 0)) == EOF) {RETURN(451);} /* nmethods */
 | 
				
			||||||
@ -139,7 +139,7 @@ void * sockschild(struct clientparam* param) {
 | 
				
			|||||||
		RETURN(997);
 | 
							RETURN(997);
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 if(param->hostname)myfree(param->hostname);
 | 
					 if(param->hostname)myfree(param->hostname);
 | 
				
			||||||
 param->hostname = (unsigned char *)mystrdup((char *)buf);
 | 
					 param->hostname = mystrdup(buf);
 | 
				
			||||||
 if (ver == 5) {
 | 
					 if (ver == 5) {
 | 
				
			||||||
	 if ((res = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_S], 0)) == EOF) {RETURN(441);}
 | 
						 if ((res = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_S], 0)) == EOF) {RETURN(441);}
 | 
				
			||||||
	 buf[0] = (unsigned char) res;
 | 
						 buf[0] = (unsigned char) res;
 | 
				
			||||||
@ -151,13 +151,13 @@ void * sockschild(struct clientparam* param) {
 | 
				
			|||||||
 else {
 | 
					 else {
 | 
				
			||||||
	sockgetlinebuf(param, CLIENT, buf, BUFSIZE - 1, 0, conf.timeouts[STRING_S]);
 | 
						sockgetlinebuf(param, CLIENT, buf, BUFSIZE - 1, 0, conf.timeouts[STRING_S]);
 | 
				
			||||||
	buf[127] = 0;
 | 
						buf[127] = 0;
 | 
				
			||||||
	if(param->srv->needuser && *buf && !param->username)param->username = (unsigned char *)mystrdup((char *)buf);
 | 
						if(param->srv->needuser && *buf && !param->username)param->username = mystrdup(buf);
 | 
				
			||||||
	if(!memcmp(SAADDR(¶m->req), "\0\0\0", 3)){
 | 
						if(!memcmp(SAADDR(¶m->req), "\0\0\0", 3)){
 | 
				
			||||||
		param->service = S_SOCKS45;
 | 
							param->service = S_SOCKS45;
 | 
				
			||||||
		sockgetlinebuf(param, CLIENT, buf, BUFSIZE - 1, 0, conf.timeouts[STRING_S]);
 | 
							sockgetlinebuf(param, CLIENT, buf, BUFSIZE - 1, 0, conf.timeouts[STRING_S]);
 | 
				
			||||||
		buf[127] = 0;
 | 
							buf[127] = 0;
 | 
				
			||||||
		if(param->hostname)myfree(param->hostname);
 | 
							if(param->hostname)myfree(param->hostname);
 | 
				
			||||||
		param->hostname = (unsigned char *)mystrdup((char *)buf);
 | 
							param->hostname = mystrdup(buf);
 | 
				
			||||||
		if(!getip46(param->srv->family, buf, (struct sockaddr *) ¶m->req)) RETURN(100);
 | 
							if(!getip46(param->srv->family, buf, (struct sockaddr *) ¶m->req)) RETURN(100);
 | 
				
			||||||
		param->sinsr = param->req;
 | 
							param->sinsr = param->req;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -185,11 +185,11 @@ void * sockschild(struct clientparam* param) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#ifdef SO_REUSEADDR
 | 
					#ifdef SO_REUSEADDR
 | 
				
			||||||
		opt = 1;
 | 
							opt = 1;
 | 
				
			||||||
		so._setsockopt(param->remsock, SOL_SOCKET, SO_REUSEADDR, (unsigned char *)&opt, sizeof(int));
 | 
							so._setsockopt(param->remsock, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(int));
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#ifdef SO_REUSEPORT
 | 
					#ifdef SO_REUSEPORT
 | 
				
			||||||
		opt = 1;
 | 
							opt = 1;
 | 
				
			||||||
		so._setsockopt(param->remsock, SOL_SOCKET, SO_REUSEPORT, (unsigned char *)&opt, sizeof(int));
 | 
							so._setsockopt(param->remsock, SOL_SOCKET, SO_REUSEPORT, &opt, sizeof(int));
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user