Handle malformed HTTP headers without \r

This commit is contained in:
z3APA3A 2016-02-19 20:47:56 +03:00
parent ad9b0046d9
commit f8a7266bdf

View File

@ -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), ':');