shithub: trueawk

Download patch

ref: 1debe1993fc852545a9215621d884be27f08a223
parent: 275a80ff33ef2782f27c4fd720b65645c89e2bbb
author: Todd C. Miller <Todd.Miller@sudo.ws>
date: Mon Nov 1 07:58:54 EDT 2021

awkgetline: do not access unitialized data on EOF
getrec() returns 0 on EOF and leaves the contents of buf unchanged.
Fixes #133.

--- a/run.c
+++ b/run.c
@@ -447,13 +447,15 @@
 			n = getrec(&record, &recsize, true);
 		else {			/* getline var */
 			n = getrec(&buf, &bufsize, false);
-			x = execute(a[0]);
-			setsval(x, buf);
-			if (is_number(x->sval, & result)) {
-				x->fval = result;
-				x->tval |= NUM;
+			if (n > 0) {
+				x = execute(a[0]);
+				setsval(x, buf);
+				if (is_number(x->sval, & result)) {
+					x->fval = result;
+					x->tval |= NUM;
+				}
+				tempfree(x);
 			}
-			tempfree(x);
 		}
 	}
 	setfval(r, (Awkfloat) n);
--