plumber: loop will go out of bounds when *++s == '\0'; replace with strstr

This commit is contained in:
BurnZeZ 2019-05-31 22:15:53 +00:00
parent ed3a3c4dd4
commit 12e136332a

View file

@ -728,7 +728,7 @@ morerules(uchar *text, int done)
{
int n;
Ruleset *rs;
uchar *otext, *s, *endofrule;
uchar *otext, *p;
pushinput("<rules input>", -1, text);
if(done)
@ -738,15 +738,11 @@ morerules(uchar *text, int done)
* Help user by sending any full rules to parser so any parse errors will
* occur on write rather than close. A heuristic will do: blank line ends rule.
*/
endofrule = nil;
for(s=text; *s!='\0'; s++)
if(*s=='\n' && *++s=='\n')
endofrule = s+1;
if(endofrule == nil){
if((p = (uchar*)strstr((char*)text, "\n\n")) == nil){
popinput();
return text;
}
input->end = endofrule;
input->end = p+2;
}
for(n=0; rules[n]; n++)
;