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 <[email protected]>
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