[gnu.bash.bug] ^D coredumps bash-1.02

gnb@melba.bby.oz.au (Gregory Bond) (08/16/89)

Bash version 1.02, ChangeLog last edit Wed Jun 28 16:51:42 1989

Sun 3/60 using SunOS 3.5Export, gcc 1.35 and Sun cc.

Typing ^D to bash to exit causes a core dump.

Cause: The readline() routine returns a char * (the read line), or EOF
on end of file.  Somewhere between 1.01 and 1.02 the code in
yy_readline_get() that handled the EOF was deleted, causing bash to
xrealloc() with EOF as a pointer.  Coredump.

Fix:

*** parse.y.orig	Wed Aug 16 14:21:34 1989
--- parse.y	Wed Aug 16 13:59:07 1989
***************
*** 427,436 ****
--- 427,448 ----
        if (!current_readline_prompt) 
  	current_readline_line = readline ("");
        else
  	current_readline_line = readline (current_readline_prompt);
  
+       /* 
+        * If you type a ^D to bash, then readline returns (char *)EOF
+        * This code avoids a coredump in xrealloc.  It was in bash-1.01 
+        * in a similar form, but was dropped for 1.02.
+        * gnb@melba.bby.oz.au 16/8/89 
+        */
+       if (current_readline_line == (char *)EOF) {
+ 	current_readline_line_index = 0;
+ 	current_readline_line == NULL;
+ 	return EOF;
+       }
+ 
        current_readline_line_index = 0;
        current_readline_line =
  	(char *)xrealloc (current_readline_line,
  			  2 + strlen (current_readline_line));
        strcat (current_readline_line, "\n");