Date: Fri, 24 Sep 2021 18:35:36 GMT From: Bryan Drewery <bdrewery@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: git: e31fb97148f7 - main - read builtin: Empty variables on timeout Message-ID: <202109241835.18OIZaEk090751@gitrepo.freebsd.org>
next in thread | raw e-mail | index | archive | help
The branch main has been updated by bdrewery: URL: https://cgit.FreeBSD.org/src/commit/?id=e31fb97148f7a392aaf6cc84579a232f2969b9d1 commit e31fb97148f7a392aaf6cc84579a232f2969b9d1 Author: Bryan Drewery <bdrewery@FreeBSD.org> AuthorDate: 2020-05-23 17:01:45 +0000 Commit: Bryan Drewery <bdrewery@FreeBSD.org> CommitDate: 2021-09-24 18:34:54 +0000 read builtin: Empty variables on timeout This matches how a non-timeout error is handled. Reviewed by: jilles MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D31876 --- bin/sh/miscbltin.c | 2 ++ bin/sh/tests/builtins/Makefile | 2 ++ bin/sh/tests/builtins/read10.0 | 8 ++++++++ bin/sh/tests/builtins/read11.0 | 17 +++++++++++++++++ 4 files changed, 29 insertions(+) diff --git a/bin/sh/miscbltin.c b/bin/sh/miscbltin.c index faccfa92d221..79d7dc097b5c 100644 --- a/bin/sh/miscbltin.c +++ b/bin/sh/miscbltin.c @@ -231,6 +231,8 @@ readcmd(int argc __unused, char **argv __unused) * If there's nothing ready, return an error. */ if (status <= 0) { + while (*ap != NULL) + setvar(*ap++, "", 0); sig = pendingsig; return (128 + (sig != 0 ? sig : SIGALRM)); } diff --git a/bin/sh/tests/builtins/Makefile b/bin/sh/tests/builtins/Makefile index 197d735920e6..f9b464a6da4b 100644 --- a/bin/sh/tests/builtins/Makefile +++ b/bin/sh/tests/builtins/Makefile @@ -141,6 +141,8 @@ ${PACKAGE}FILES+= read6.0 ${PACKAGE}FILES+= read7.0 ${PACKAGE}FILES+= read8.0 ${PACKAGE}FILES+= read9.0 +${PACKAGE}FILES+= read10.0 +${PACKAGE}FILES+= read11.0 ${PACKAGE}FILES+= return1.0 ${PACKAGE}FILES+= return2.1 ${PACKAGE}FILES+= return3.1 diff --git a/bin/sh/tests/builtins/read10.0 b/bin/sh/tests/builtins/read10.0 new file mode 100644 index 000000000000..5fc19896390a --- /dev/null +++ b/bin/sh/tests/builtins/read10.0 @@ -0,0 +1,8 @@ + +set -e + +v=original_value +r=0 +read v < /dev/null || r=$? +[ "$r" -eq 1 ] +[ -z "$v" ] diff --git a/bin/sh/tests/builtins/read11.0 b/bin/sh/tests/builtins/read11.0 new file mode 100644 index 000000000000..c75ed9c92a83 --- /dev/null +++ b/bin/sh/tests/builtins/read11.0 @@ -0,0 +1,17 @@ + +set -e + +T=$(mktemp -d ${TMPDIR:-/tmp}/sh-test.XXXXXX) +trap 'rm -rf "$T"' 0 +cd $T +mkfifo fifo1 +# Open fifo1 for writing and then read block on a dummy fifo +{ mkfifo fifo2; read dummy <fifo2; } >fifo1 & +# Wait for the child to open fifo1 for writing +exec 3<fifo1 +v=original_value +r=0 +read -t 0 v <&3 || r=$? +kill -TERM "$!" || : +{ [ "$r" -gt 128 ] && [ "$(kill -l "$r")" = ALRM ]; } || exit +[ -z "$v" ]
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202109241835.18OIZaEk090751>