mirror of
https://github.com/3proxy/3proxy.git
synced 2025-02-24 02:55:40 +08:00
Handle malformed HTTP headers without \r
This commit is contained in:
parent
ad9b0046d9
commit
f8a7266bdf
10
src/proxy.c
10
src/proxy.c
@ -443,12 +443,16 @@ for(;;){
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if(param->transparent && i > 6 && !strncasecmp((char *)buf + inbuf, "Host:", 5)){
|
if(param->transparent && i > 6 && !strncasecmp((char *)buf + inbuf, "Host:", 5)){
|
||||||
|
unsigned char c;
|
||||||
sb = (unsigned char *)strchr((char *)(buf+inbuf), ':');
|
sb = (unsigned char *)strchr((char *)(buf+inbuf), ':');
|
||||||
if(!sb)continue;
|
if(!sb)continue;
|
||||||
++sb;
|
++sb;
|
||||||
while(isspace(*sb))sb++;
|
while(isspace(*sb))sb++;
|
||||||
se = (unsigned char *)strchr((char *)sb, '\r');
|
(se = (unsigned char *)strchr((char *)sb, '\r')) || (se = (unsigned char *)strchr((char *)sb, '\n'));
|
||||||
if(se) *se = 0;
|
if(se) {
|
||||||
|
c = *se;
|
||||||
|
*se = 0;
|
||||||
|
}
|
||||||
if(!param->hostname){
|
if(!param->hostname){
|
||||||
parsehostname((char *)sb, param, 80);
|
parsehostname((char *)sb, param, 80);
|
||||||
}
|
}
|
||||||
@ -460,7 +464,7 @@ for(;;){
|
|||||||
myfree(req);
|
myfree(req);
|
||||||
req = newbuf;
|
req = newbuf;
|
||||||
}
|
}
|
||||||
if(se)*se = '\r';
|
if(se)*se = c;
|
||||||
}
|
}
|
||||||
if(ftp && i > 13 && (!strncasecmp((char *)(buf+inbuf), "authorization", 13))){
|
if(ftp && i > 13 && (!strncasecmp((char *)(buf+inbuf), "authorization", 13))){
|
||||||
sb = (unsigned char *)strchr((char *)(buf+inbuf), ':');
|
sb = (unsigned char *)strchr((char *)(buf+inbuf), ':');
|
||||||
|
Loading…
Reference in New Issue
Block a user