Configuration Information [Automatically generated, do not change]: Machine: x86_64 OS: linux-gnu Compiler: gcc Compilation CFLAGS: -DPROGRAM='bash' -DCONF_HOSTTYPE='x86_64' -DCONF_OSTYPE='linux-gnu' -DCONF_MACHTYPE='x86_64-unknown-linux-gnu' -DCONF_VENDOR='unknown' -DLOCALEDIR='/usr/local/share/locale' -DPACKAGE='bash' -DSHELL -DHAVE_CONFIG_H -I. -I. -I./include -I./lib -g -O0 -Wno-parentheses -Wno-format-security uname output: Linux localhost.localdomain 4.11.6-201.fc25.x86_64 #1 SMP Tue Jun 20 20:21:11 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux Machine Type: x86_64-unknown-linux-gnu
Bash Version: 4.4 Patch Level: 12 Release Status: release Description: read builtin goes into uninterruptible loop if input comes from /dev/zero. Repeat-By: read -N 1 _ < /dev/zero Fix: Attached patch fixes the bug. -- -- Siteshwar Vashisht
From 8d49a26b2bf9c150d23526da0999d8d4fa38a4f7 Mon Sep 17 00:00:00 2001 From: Siteshwar Vashisht <svashi...@redhat.com> Date: Fri, 28 Jul 2017 15:51:07 +0200 Subject: [PATCH] Make read builtin interruptible if input contains zeros --- builtins/read.def | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/builtins/read.def b/builtins/read.def index 33821f3..de23ab0 100644 --- a/builtins/read.def +++ b/builtins/read.def @@ -609,7 +609,7 @@ read_builtin (list) break; } - CHECK_ALRM; + check_signals(); #if defined (READLINE) } @@ -662,7 +662,10 @@ read_builtin (list) break; if (c == '\0' && delim != '\0') - continue; /* skip NUL bytes in input */ + { + internal_warning ("read_builtin: ignored null byte in input"); + continue; /* skip NUL bytes in input */ + } if ((skip_ctlesc == 0 && c == CTLESC) || (skip_ctlnul == 0 && c == CTLNUL)) { -- 2.9.4