From 1debe1993fc852545a9215621d884be27f08a223 Mon Sep 17 00:00:00 2001 From: "Todd C. Miller" Date: Mon, 1 Nov 2021 11:58:54 -0600 Subject: [PATCH] awkgetline: do not access unitialized data on EOF getrec() returns 0 on EOF and leaves the contents of buf unchanged. Fixes #133. --- run.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/run.c b/run.c index da4f555..3ad9ecf 100644 --- a/run.c +++ b/run.c @@ -447,13 +447,15 @@ Cell *awkgetline(Node **a, int n) /* get next line from specific input */ 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);