mothra: dynamically allocate buffer for refresh url (was 20 bytes stack buffer before) (thanks BurnZeZ for reporting)

This commit is contained in:
cinap_lenrek 2016-03-11 21:46:49 +01:00
parent fb1551e997
commit 8a2d962570

View file

@ -268,8 +268,9 @@ int pl_nextc(Hglob *g){
return c; return c;
} }
char *unquot(char *dst, char *src, int len){ char *unquot(char *src){
char *e; char *e, *dst;
int len;
e=0; e=0;
while(*src && strchr(" \t\r\n", *src)) while(*src && strchr(" \t\r\n", *src))
@ -279,10 +280,9 @@ char *unquot(char *dst, char *src, int len){
src++; src++;
} }
if(e==0) e=strchr(src, 0); if(e==0) e=strchr(src, 0);
len--; len=e-src;
if((e - src) < len) dst = emalloc(len+1);
len=e-src; memmove(dst, src, len);
if(len>0) memmove(dst, src, len);
dst[len]=0; dst[len]=0;
return dst; return dst;
} }
@ -877,8 +877,9 @@ void plrdhtml(char *name, int fd, Www *dst){
str++; str++;
pl_htmloutput(&g, 0, "[refresh: ", 0); pl_htmloutput(&g, 0, "[refresh: ", 0);
free(g.state->link); free(g.state->link);
g.state->link=unquot(buf, str, sizeof(buf)); g.state->link=unquot(str);
pl_htmloutput(&g, 0, str, 0); pl_htmloutput(&g, 0, g.state->link, 0);
free(g.state->link);
g.state->link=0; g.state->link=0;
pl_htmloutput(&g, 0, "]", 0); pl_htmloutput(&g, 0, "]", 0);
g.linebrk=1; g.linebrk=1;