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);
--
⑨