mirror of
https://github.com/3proxy/3proxy.git
synced 2026-06-02 22:40:12 +08:00
fix: V-001 security vulnerability
Automated security fix generated by OrbisAI Security
This commit is contained in:
parent
eab5758b51
commit
421ec7761a
@ -51,29 +51,29 @@ int clientnegotiate(struct chain * redir, struct clientparam * param, struct soc
|
||||
case R_CONNECT:
|
||||
case R_CONNECTP:
|
||||
{
|
||||
len = sprintf((char *)buf, "CONNECT ");
|
||||
len = snprintf((char *)buf, 2048, "CONNECT ");
|
||||
if(redir->type == R_CONNECTP && hostname) {
|
||||
char * needreplace;
|
||||
needreplace = strchr((char *)hostname, ':');
|
||||
if(needreplace) buf[len++] = '[';
|
||||
len += sprintf((char *)buf + len, "%.256s", (char *)hostname);
|
||||
len += snprintf((char *)buf + len, 2048 - len, "%.256s", (char *)hostname);
|
||||
if(needreplace) buf[len++] = ']';
|
||||
}
|
||||
else {
|
||||
if(*SAFAMILY(addr) == AF_INET6) buf[len++] = '[';
|
||||
len += myinet_ntop(*SAFAMILY(addr), SAADDR(addr), (char *)buf+len, 256);
|
||||
len += myinet_ntop(*SAFAMILY(addr), SAADDR(addr), (char *)buf+len, 2048 - len);
|
||||
if(*SAFAMILY(addr) == AF_INET6) buf[len++] = ']';
|
||||
}
|
||||
len += sprintf((char *)buf + len,
|
||||
len += snprintf((char *)buf + len, 2048 - len,
|
||||
":%hu HTTP/1.0\r\nConnection: keep-alive\r\n", ntohs(*SAPORT(addr)));
|
||||
if(user){
|
||||
len += sprintf((char *)buf + len, "Proxy-Authorization: Basic ");
|
||||
sprintf((char *)username, "%.128s:%.128s", user, pass?pass:(unsigned char *)"");
|
||||
len += snprintf((char *)buf + len, 2048 - len, "Proxy-Authorization: Basic ");
|
||||
snprintf((char *)username, 258, "%.128s:%.128s", user, pass?pass:(unsigned char *)"");
|
||||
en64(username, buf+len, (int)strlen((char *)username));
|
||||
len = (int)strlen((char *)buf);
|
||||
len += sprintf((char *)buf + len, "\r\n");
|
||||
len += snprintf((char *)buf + len, 2048 - len, "\r\n");
|
||||
}
|
||||
len += sprintf((char *)buf + len, "\r\n");
|
||||
len += snprintf((char *)buf + len, 2048 - len, "\r\n");
|
||||
if(socksend(param, param->remsock, buf, len, conf.timeouts[CHAIN_TO]) != (int)strlen((char *)buf))
|
||||
return 31;
|
||||
param->statssrv64+=len;
|
||||
@ -364,12 +364,12 @@ int handleredirect(struct clientparam * param, struct ace * acentry){
|
||||
if(ha) {
|
||||
char buf[128];
|
||||
int len;
|
||||
len = sprintf(buf, "PROXY %s ",
|
||||
len = snprintf(buf, sizeof(buf), "PROXY %s ",
|
||||
*SAFAMILY(¶m->sincr) == AF_INET6 ? "TCP6" : "TCP4");
|
||||
len += myinet_ntop(*SAFAMILY(¶m->sincr), SAADDR(¶m->sincr), buf+len, sizeof(buf) - len);
|
||||
buf[len++] = ' ';
|
||||
len += myinet_ntop(*SAFAMILY(¶m->sincl), SAADDR(¶m->sincl), buf+len, sizeof(buf) - len);
|
||||
len += sprintf(buf + len, " %hu %hu\r\n",
|
||||
len += snprintf(buf + len, sizeof(buf) - len, " %hu %hu\r\n",
|
||||
ntohs(*SAPORT(¶m->sincr)),
|
||||
ntohs(*SAPORT(¶m->sincl))
|
||||
);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user