mirror of
https://github.com/3proxy/3proxy.git
synced 2025-04-22 04:02:08 +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