🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: gnu.gdb.bug
Article #208

Re: gdb seg fault (subscript out of bound) on invalid signal number

#208
From: Hal Peterson
Date: Mon, 24 Jul 1989 17:54
64 lines
2686 bytes
The same thing happens with 3.2 on a Sun-3 running SunOS 3.5.  The
problem (in 3.2, anyway) is that signals_info isn't doing a bounds
check on the signal number, and since there are only 32 signals, it
indexes off the end of the sys_siglist array.  Following my .signature
is a patch to fix it in 3.2.
-- 
Hal Peterson			Domain:  hrp@cray.com
Cray Research			Old style:  hrp%cray.com@uc.msc.umn.edu
1440 Northland Dr.		UUCP:  uunet!cray!hrp
Mendota Hts, MN  55120  USA	Telephone:  +1 612 681 3145
========================================================================
*** infrun-DIST.c       Wed Jul  5 14:46:07 1989
--- infrun.c    Mon Jul 24 12:37:50 1989
***************
*** 1223,1241 ****
       char *signum_exp;
  {
    register int i;
!   printf_filtered ("Number\tStop\tPrint\tPass to program\tDescription\n");

    if (signum_exp)
      {
        i = parse_and_eval_address (signum_exp);
!       printf_filtered ("%d\t", i);
!       printf_filtered ("%s\t", signal_stop[i] ? "Yes" : "No");
!       printf_filtered ("%s\t", signal_print[i] ? "Yes" : "No");
!       printf_filtered ("%s\t\t", signal_program[i] ? "Yes" : "No");
!       printf_filtered ("%s\n", sys_siglist[i]);
        return;
      }

    printf_filtered ("\n");
    for (i = 0; i < NSIG; i++)
      {
--- 1223,1251 ----
       char *signum_exp;
  {
    register int i;
!   register char *heading =
!     "Number\tStop\tPrint\tPass to program\tDescription\n";

    if (signum_exp)
      {
        i = parse_and_eval_address (signum_exp);
!       if ((i < NSIG) && (i >= 0))
!       {
!         printf_filtered (heading);
!         printf_filtered ("%d\t", i);
!         printf_filtered ("%s\t", signal_stop[i] ? "Yes" : "No");
!         printf_filtered ("%s\t", signal_print[i] ? "Yes" : "No");
!         printf_filtered ("%s\t\t", signal_program[i] ? "Yes" : "No");
!         printf_filtered ("%s\n", sys_siglist[i]);
!       }
!       else
!       {
!         error ("Invalid signal %d given as argument to \"info signal\"", i);
!       }
        return;
      }

+   printf_filtered (heading);
    printf_filtered ("\n");
    for (i = 0; i < NSIG; i++)
      {
Technical Details
Message-ID: <8907241754.AA13351@rothko.cray.com>
Path: arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!cwjcc!tut.cis.ohio-state.edu!boring.cray.com!hrp
References: <8907171834.AA19716@ivy.ucdavis.edu>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!cwjcc!tut.cis.ohio-state.edu!boring.cray.com!hrp
From: hrp@boring.cray.com (Hal Peterson)
Newsgroups: gnu.gdb.bug
Subject: Re: gdb seg fault (subscript out of bound) on invalid signal number
Message-ID: <8907241754.AA13351@rothko.cray.com>
Date: 24 Jul 89 17:54:30 GMT
References: <8907171834.AA19716@ivy.ucdavis.edu>
Sender: daemon@tut.cis.ohio-state.edu
Distribution: gnu
Organization: Cray Research, Inc.
Lines: 64