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_CONNECT:
|
||||||
case R_CONNECTP:
|
case R_CONNECTP:
|
||||||
{
|
{
|
||||||
len = sprintf((char *)buf, "CONNECT ");
|
len = snprintf((char *)buf, 2048, "CONNECT ");
|
||||||
if(redir->type == R_CONNECTP && hostname) {
|
if(redir->type == R_CONNECTP && hostname) {
|
||||||
char * needreplace;
|
char * needreplace;
|
||||||
needreplace = strchr((char *)hostname, ':');
|
needreplace = strchr((char *)hostname, ':');
|
||||||
if(needreplace) buf[len++] = '[';
|
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++] = ']';
|
if(needreplace) buf[len++] = ']';
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if(*SAFAMILY(addr) == AF_INET6) buf[len++] = '[';
|
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++] = ']';
|
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)));
|
":%hu HTTP/1.0\r\nConnection: keep-alive\r\n", ntohs(*SAPORT(addr)));
|
||||||
if(user){
|
if(user){
|
||||||
len += sprintf((char *)buf + len, "Proxy-Authorization: Basic ");
|
len += snprintf((char *)buf + len, 2048 - len, "Proxy-Authorization: Basic ");
|
||||||
sprintf((char *)username, "%.128s:%.128s", user, pass?pass:(unsigned char *)"");
|
snprintf((char *)username, 258, "%.128s:%.128s", user, pass?pass:(unsigned char *)"");
|
||||||
en64(username, buf+len, (int)strlen((char *)username));
|
en64(username, buf+len, (int)strlen((char *)username));
|
||||||
len = (int)strlen((char *)buf);
|
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))
|
if(socksend(param, param->remsock, buf, len, conf.timeouts[CHAIN_TO]) != (int)strlen((char *)buf))
|
||||||
return 31;
|
return 31;
|
||||||
param->statssrv64+=len;
|
param->statssrv64+=len;
|
||||||
@ -364,12 +364,12 @@ int handleredirect(struct clientparam * param, struct ace * acentry){
|
|||||||
if(ha) {
|
if(ha) {
|
||||||
char buf[128];
|
char buf[128];
|
||||||
int len;
|
int len;
|
||||||
len = sprintf(buf, "PROXY %s ",
|
len = snprintf(buf, sizeof(buf), "PROXY %s ",
|
||||||
*SAFAMILY(¶m->sincr) == AF_INET6 ? "TCP6" : "TCP4");
|
*SAFAMILY(¶m->sincr) == AF_INET6 ? "TCP6" : "TCP4");
|
||||||
len += myinet_ntop(*SAFAMILY(¶m->sincr), SAADDR(¶m->sincr), buf+len, sizeof(buf) - len);
|
len += myinet_ntop(*SAFAMILY(¶m->sincr), SAADDR(¶m->sincr), buf+len, sizeof(buf) - len);
|
||||||
buf[len++] = ' ';
|
buf[len++] = ' ';
|
||||||
len += myinet_ntop(*SAFAMILY(¶m->sincl), SAADDR(¶m->sincl), buf+len, sizeof(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->sincr)),
|
||||||
ntohs(*SAPORT(¶m->sincl))
|
ntohs(*SAPORT(¶m->sincl))
|
||||||
);
|
);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user