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-redhat-linux-gnu' 
-DCONF_VENDOR='redhat' -DLOCALEDIR='/usr/share/locale' -DPACKAGE='bash' -DSHELL 
-DHAVE_CONFIG_H   -I.  -I. -I./include -I./lib  -D_GNU_SOURCE -DRECYCLES_PIDS 
-DDEFAULT_PATH_VALUE='/usr/local/bin:/usr/bin'  -O2 -g -pipe -Wall 
-Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions 
-fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches 
-specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic 
-fasynchronous-unwind-tables -Wno-parentheses -Wno-format-security
uname output: Linux localhost.localdomain 4.16.13-200.fc27.x86_64 #1 SMP Wed 
May 30 15:03:53 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
Machine Type: x86_64-redhat-linux-gnu

Bash Version: 4.4
Patch Level: 19
Release Status: release

Description:
        Bash fails to exit and shows 100% cpu usage if parent sshd process is 
killed while performing command search.

Repeat-By:

1. ssh to localhost with bash as default shell.
2. In the ssh session press 'ESC -p', this will show ':' on command line.
3. From a different terminal, check parent process id for bash running in ssh 
session by executing 'ps fax'. For e.g. on my machine it is 9825:

9822 ?        Ss     0:00  \_ sshd: situ [priv]
9825 ?        S      0:00      \_ sshd: situ@pts/8
9834 pts/8    Ss+    0:00          \_ -bash

4. Kill the parent process of bash by executing:

kill -hup 9825

5. Bash gets stuck in a loop and shows 100% cpu usage.

Fix:
        See attached patch. Credits to Paulo Andrade <pandr...@redhat.com> for 
finding and fixing the bug.


-- 
--
Siteshwar Vashisht
diff --git a/lib/readline/search.c b/lib/readline/search.c
--- a/lib/readline/search.c
+++ b/lib/readline/search.c
@@ -367,7 +367,7 @@ noninc_search (dir, pchar)
     {
       c = _rl_search_getchar (cxt);
 
-      if (c == 0)
+      if (c <= 0)
 	break;
 
       r = _rl_nsearch_dispatch (cxt, c);

Reply via email to