diff options
author | BurnZeZ <devnull@localhost> | 2019-05-31 22:15:53 +0000 |
---|---|---|
committer | BurnZeZ <devnull@localhost> | 2019-05-31 22:15:53 +0000 |
commit | 12e136332a7dcb6e4d0b4a85fef9ff97dfa57200 (patch) | |
tree | 3362be9197a3b1fbba32ec5d2e784f399becec77 | |
parent | ed3a3c4dd44efb92a1897baa4e07aa685227cddd (diff) | |
download | plan9front-12e136332a7dcb6e4d0b4a85fef9ff97dfa57200.tar.xz |
plumber: loop will go out of bounds when *++s == '\0'; replace with strstr
-rw-r--r-- | sys/src/cmd/plumb/rules.c | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/sys/src/cmd/plumb/rules.c b/sys/src/cmd/plumb/rules.c index 5f7ea34e7..c5bec452d 100644 --- a/sys/src/cmd/plumb/rules.c +++ b/sys/src/cmd/plumb/rules.c @@ -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++) ; |