shithub: riscv

Download patch

ref: fc90f7a666da0b1634797d8596e8fdd4bbeba956
parent: 698837e7150af19ff6a3f0bf2144dffc81202a55
author: Ori Bernstein <[email protected]>
date: Mon Mar 9 10:24:02 EDT 2020

fix heredoc crash

we emitted an error on heredoc tags, but we
continued on, and added a heredoc entry to
the list, with a tag that we couldn't handle.

when processing this heredoc, rc would segfault.

fix: don't add a heredoc to the list on error.

--- a/sys/src/cmd/rc/here.c
+++ b/sys/src/cmd/rc/here.c
@@ -22,9 +22,13 @@
 tree*
 heredoc(tree *tag)
 {
-	struct here *h = new(struct here);
-	if(tag->type!=WORD)
+	struct here *h;
+
+	if(tag->type!=WORD){
 		yyerror("Bad here tag");
+		return nil;
+	}
+	h = new(struct here);
 	h->next = 0;
 	if(here)
 		*ehere = h;