🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: gnu.bash.bug
Article #369

bash bug report

#369
From: Emil M. Scoffone
Date: Fri, 21 Jul 1989 22:14
227 lines
6526 bytes
To: bug-bash@ai.mit.edu

GNU program:		Bash 1.02
Machine:		Compaq Deskpro 386/16
Operating System:	System V/386 Release 3.2
			(vendor: Bell Technologies)
Compiler:		GNU C, version 1.35, with GNU as and ld.

****************************************

These are bugs I found while installing bash:

----------------------------------------
in `shell.c':
	on line 305: 'job_control' undefined.
Fix:
	changed line 304 from
#ifndef JOB_CONTROL
	to
#ifndef NOJOBS
----------------------------------------
in `variables.c' and `readline.c':
	`struct pwd' should be `struct passwd'
----------------------------------------
in `readline.c':
	`sigsetmask' is referenced, but there is no such
	system call on my UNIX.
Fix:
	I defined a dummy `sigsetmask' that does nothing. I
	was too lazy to write one that mimicks the behaviour of 
	BSD `sigsetmask'
----------------------------------------
in 'glob.c':
	I added an #ifdef to use the GNU builtin alloca.
----------------------------------------

****************************************

These are bugs I found while running bash:

----------------------------------------
The shell does incorrectly reports exit codes from a killed job.
This is because a couple of masks were defined incorrectly in
`jobs.h'. I also parenthesized two expressions in 'nojobs.h'.
----------------------------------------
I get segmentation violations or memory errors, and the shell
bombs, when I hit ^D. This is the same bug I reported a couple
of days ago on a Sun 3/160, and I fixed it the same way
(added a few lines to 'parse.y').
----------------------------------------

****************************************

The following is a list of modifications to the source files:

------------------------------------------------------------
diff -c shell.c shell.c~

*** shell.c	Tue Jul 11 20:33:11 1989
--- shell.c~	Fri Jul 21 15:01:20 1989
***************
*** 301,307 ****
    else
      {
        interactive = 0;
! #ifndef NOJOBS
        job_control = 0;
  #endif
      }
--- 301,307 ----
    else
      {
        interactive = 0;
! #ifndef JOB_CONTROL
        job_control = 0;
  #endif
      }

------------------------------------------------------------
diff -c variables.c variables.c~

*** variables.c	Tue Jul 11 21:02:14 1989
--- variables.c~	Fri Jul 21 15:01:20 1989
***************
*** 26,31 ****
--- 26,35 ----
  #include "flags.h"
  #include "version.h"
  
+ #ifdef SYSV
+ struct pwd *getpwuid (), *getpwent ();
+ #endif
+ 
  /* The list of shell variables that the user has created, or that came from
     the environment. */
  SHELL_VAR *variable_list;

------------------------------------------------------------
diff -c ./lib/readline.c ./lib/readline.c~

*** ./lib/readline.c	Fri Jul 21 15:07:21 1989
--- ./lib/readline.c~	Fri Jul 21 15:02:42 1989
***************
*** 58,63 ****
--- 58,66 ----
  #include <sys/stat.h>
  
  #include <pwd.h>
+ #ifdef SYSV
+ struct pwd *getpwuid (), *getpwent ();
+ #endif
  
  #define HACK_TERMCAP_MOTION
  
***************
*** 272,284 ****
         		*old_ttou = (Function *)NULL,
         		*old_ttin = (Function *)NULL,
         	 	*old_cont = (Function *)NULL;
- 
- #ifdef SYSV
- void sigsetmask(mask)
- int mask;
- {
- }
- #endif SYSV
    
  /* Handle an interrupt character. */
  static
--- 275,280 ----

------------------------------------------------------------
diff -c jobs.h jobs.h~

*** jobs.h	Mon Jul 17 22:14:14 1989
--- jobs.h~	Fri Jul 21 15:01:20 1989
***************
*** 17,26 ****
  
  #define WSTOPPED 0177
  #define w_status word
! #define w_termsig bytes.low & 0x7f
! #define w_coredump bytes.low & ~0x7f
  #define w_stopsig bytes.high
  #define w_retcode bytes.high
  #define WIFEXITED(wstat) ((wstat).bytes.low == 0)
  #define WIFSTOPPED(wstat) ((wstat).bytes.low == 0177)
  #define WIFTERMINATED(wstat) ((wstat).bytes.high == 0)
--- 17,26 ----
  
  #define WSTOPPED 0177
  #define w_status word
! #define w_termsig bytes.low & ~0x7f
  #define w_stopsig bytes.high
  #define w_retcode bytes.high
+ #define w_coredump w_termsig & 0x7f
  #define WIFEXITED(wstat) ((wstat).bytes.low == 0)
  #define WIFSTOPPED(wstat) ((wstat).bytes.low == 0177)
  #define WIFTERMINATED(wstat) ((wstat).bytes.high == 0)

------------------------------------------------------------
diff -c nojobs.c nojobs.c~

*** nojobs.c	Mon Jul 17 22:14:43 1989
--- nojobs.c~	Fri Jul 21 15:11:22 1989
***************
*** 144,151 ****
    /* Default return value. */
    return_val = status.w_retcode & 0x7f;
  
!   if ((status.w_termsig) != 0 &&
!       (status.w_termsig) != WSTOPPED) {
  #ifndef SYSV
      extern char *sys_siglist[];
      fprintf (stderr, "%s", sys_siglist[status.w_termsig]);
--- 144,151 ----
    /* Default return value. */
    return_val = status.w_retcode & 0x7f;
  
!   if (status.w_termsig != 0 &&
!       status.w_termsig != WSTOPPED) {
  #ifndef SYSV
      extern char *sys_siglist[];
      fprintf (stderr, "%s", sys_siglist[status.w_termsig]);

------------------------------------------------------------
diff -c glob.c glob.c~

*** glob.c	Tue Jul 11 21:35:20 1989
--- glob.c~	Fri Jul 21 15:02:19 1989
***************
*** 51,63 ****
  #ifdef	sparc
  #include <alloca.h>
  #else
- 
- #ifdef __GNUC__
- #define alloca __builtin_alloca
- #else
  extern char *alloca ();
- #endif
- 
  #endif	/* sparc */
  
  extern char *malloc (), *realloc ();
--- 51,57 ----

------------------------------------------------------------
diff -c parse.y parse.y~

*** parse.y	Mon Jul 17 22:19:06 1989
--- parse.y~	Fri Jul 21 15:11:03 1989
***************
*** 429,440 ****
        else
  	current_readline_line = readline (current_readline_prompt);
  
-       if (current_readline_line == (char *) EOF)
-         {
-           current_readline_line = (char *)NULL;
-           return (EOF);
-         }
- 
        current_readline_line_index = 0;
        current_readline_line =
  	(char *)xrealloc (current_readline_line,
--- 429,434 ----
Technical Details
Message-ID: <8907212214.AA19076@sdchemv1.chem.ucsd.edu>
Path: arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!UCSD.EDU!emil%chem

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!UCSD.EDU!emil%chem
From: emil%chem@UCSD.EDU (Emil M. Scoffone)
Newsgroups: gnu.bash.bug
Subject: bash bug report
Message-ID: <8907212214.AA19076@sdchemv1.chem.ucsd.edu>
Date: 21 Jul 89 22:14:08 GMT
Sender: daemon@tut.cis.ohio-state.edu
Distribution: gnu
Organization: GNUs Not Usenet
Lines: 227