diff options
author | Jacob Moody <moody@posixcafe.org> | 2023-04-06 02:59:11 +0000 |
---|---|---|
committer | Jacob Moody <moody@posixcafe.org> | 2023-04-06 02:59:11 +0000 |
commit | 26e42d115979009c9fe144e1c28f740485537674 (patch) | |
tree | c9bbd6e3770c617765357b1a2686789dade9845e /sys/src/cmd | |
parent | 9ab4f2a2428ef5ad2f4abc118f589bd70f6c2f90 (diff) |
awk: getline: do not access unitialized data on EOF
echo 'a' | awk 'BEGIN { getline l; getline l; print (s=substr(l,1,10)) " len=" length(s) }'
https://github.com/onetrueawk/awk/commit/1debe1993fc852545a9215621d884be27f08a223
Diffstat (limited to 'sys/src/cmd')
-rw-r--r-- | sys/src/cmd/awk/run.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/sys/src/cmd/awk/run.c b/sys/src/cmd/awk/run.c index 3f049658d..afe4026cb 100644 --- a/sys/src/cmd/awk/run.c +++ b/sys/src/cmd/awk/run.c @@ -438,10 +438,12 @@ Cell *getline(Node **a, int n) /* get next line from specific input */ n = getrec(&record, &recsize, 1); else { /* getline var */ n = getrec(&buf, &bufsize, 0); - x = execute(a[0]); - setsval(x, buf); - if (istemp(x)) - tfree(x); + if (n > 0) { + x = execute(a[0]); + setsval(x, buf); + if (istemp(x)) + tfree(x); + } } } setfval(r, (Awkfloat) n); |