/bin/sh needs to use sys_nsig, not NSIG, when accessing static arrays
authorMatthew Dillon <dillon@dragonflybsd.org>
Tue, 14 Oct 2003 23:03:08 +0000 (23:03 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Tue, 14 Oct 2003 23:03:08 +0000 (23:03 +0000)
defined in libc.  /bin/sh also needs to check for NULL entries.

bin/sh/jobs.c
bin/sh/trap.c

index d1d8843..a6c006e 100644 (file)
@@ -35,7 +35,7 @@
  *
  * @(#)jobs.c  8.5 (Berkeley) 5/4/95
  * $FreeBSD: src/bin/sh/jobs.c,v 1.27.2.10 2003/04/04 08:16:26 tjr Exp $
- * $DragonFly: src/bin/sh/jobs.c,v 1.3 2003/08/24 16:26:00 drhodus Exp $
+ * $DragonFly: src/bin/sh/jobs.c,v 1.4 2003/10/14 23:03:08 dillon Exp $
  */
 
 #include <fcntl.h>
@@ -358,7 +358,7 @@ showjob(struct job *jp, pid_t pid, int sformat, int lformat)
                        else
 #endif
                                i = WTERMSIG(ps->status);
-                       if ((i & 0x7F) < NSIG && sys_siglist[i & 0x7F])
+                       if ((i & 0x7F) < sys_nsig && sys_siglist[i & 0x7F])
                                scopy(sys_siglist[i & 0x7F], s);
                        else
                                fmtstr(s, 64, "Signal %d", i & 0x7F);
@@ -981,7 +981,7 @@ dowait(int block, struct job *job)
                        if (!mflag ||
                            (thisjob->foreground && !WIFSTOPPED(status))) {
                                i = WTERMSIG(status);
-                               if ((i & 0x7F) < NSIG && sys_siglist[i & 0x7F])
+                               if ((i & 0x7F) < sys_nsig && sys_siglist[i & 0x7F])
                                        out1str(sys_siglist[i & 0x7F]);
                                else
                                        out1fmt("Signal %d", i & 0x7F);
index 3c131e9..dc535bc 100644 (file)
@@ -35,7 +35,7 @@
  *
  * @(#)trap.c  8.5 (Berkeley) 6/5/95
  * $FreeBSD: src/bin/sh/trap.c,v 1.20.2.2 2002/08/27 01:36:28 tjr Exp $
- * $DragonFly: src/bin/sh/trap.c,v 1.2 2003/06/17 04:22:50 dillon Exp $
+ * $DragonFly: src/bin/sh/trap.c,v 1.3 2003/10/14 23:03:08 dillon Exp $
  */
 
 #include <signal.h>
@@ -102,9 +102,10 @@ sigstring_to_signum(char *sig)
 
                if (strncasecmp(sig, "sig", 3) == 0)
                        sig += 3;
-               for (n = 1; n < NSIG; n++)
-                       if (strcasecmp(sys_signame[n], sig) == 0)
+               for (n = 1; n < sys_nsig; n++) {
+                       if (sys_signame[n] && strcasecmp(sys_signame[n], sig) == 0)
                                return (n);
+               }
        }
        return (-1);
 }
@@ -118,7 +119,7 @@ printsignals(void)
 {
        int n;
 
-       for (n = 1; n < NSIG; n++) {
+       for (n = 1; n < sys_nsig; n++) {
                out1fmt("%s", sys_signame[n]);
                if (n == (NSIG / 2) || n == (NSIG - 1))
                        out1str("\n");
@@ -138,10 +139,11 @@ trapcmd(int argc, char **argv)
        int signo;
 
        if (argc <= 1) {
-               for (signo = 0 ; signo < NSIG ; signo++) {
-                       if (trap[signo] != NULL)
+               for (signo = 0 ; signo < sys_nsig; signo++) {
+                       if (trap[signo] != NULL) {
                                out1fmt("trap -- '%s' %s\n", trap[signo],
                                        (signo) ? sys_signame[signo] : "exit");
+                       }
                }
                return 0;
        }