Article View: gnu.gdb.bug
Article #215null pointer dereferences in gdb-3.2
From: Eirik Fuller
Date: Thu, 27 Jul 1989 19:51
Date: Thu, 27 Jul 1989 19:51
161 lines
4611 bytes
4611 bytes
The enclosed diffs provide a workaround for gdb segmentation faults.
If there is supposed to be a guarantee that TYPE_FIELD_NAME etc are
non-nil, this guarantee sometimes fails; if appropriate, I can
probably send examples of how to make this happen. If there is no
such guarantee, this might be the right fix. In any case, I doubt
these patches break anything.
*** ../gdb-3.2/valops.c Wed Jul 5 12:46:58 1989
--- valops.c Mon Jul 17 14:56:56 1989
***************
*** 816,822
{
for (i = TYPE_NFIELDS (t) - 1; i >= 0; i--)
{
! if (!strcmp (TYPE_FIELD_NAME (t, i), name))
{
found = 1;
break;
--- 816,823 -----
{
for (i = TYPE_NFIELDS (t) - 1; i >= 0; i--)
{
! char *tfn = TYPE_FIELD_NAME (t, i);
! if (tfn && !strcmp (tfn, name))
{
found = 1;
break;
***************
*** 846,852
{
for (i = TYPE_NFN_FIELDS (t) - 1; i >= 0; --i)
{
! if (! strcmp (TYPE_FN_FIELDLIST_NAME (t, i), name))
{
error ("use `info method' command to print value of method \"%s\"", name);
}
--- 847,854 -----
{
for (i = TYPE_NFN_FIELDS (t) - 1; i >= 0; --i)
{
! char *tfn = TYPE_FN_FIELDLIST_NAME (t, i);
! if (tfn && ! strcmp (tfn, name))
{
error ("use `info method' command to print value of method \"%s\"", name);
}
***************
*** 886,892
{
struct fn_field *f = TYPE_FN_FIELDLIST1 (t, i);
! if (!strcmp (TYPE_FN_FIELDLIST_NAME (t, i), name))
{
int j;
struct fn_field *f = TYPE_FN_FIELDLIST1 (t, i);
--- 888,895 -----
{
struct fn_field *f = TYPE_FN_FIELDLIST1 (t, i);
! char *tfn = TYPE_FN_FIELDLIST_NAME (t, i);
! if (tfn && !strcmp (tfn, name))
{
int j;
struct fn_field *f = TYPE_FN_FIELDLIST1 (t, i);
***************
*** 925,931
{
for (i = TYPE_NFIELDS (t) - 1; i >= 0; i--)
{
! if (!strcmp (TYPE_FIELD_NAME (t, i), name))
{
found = 1;
break;
--- 928,935 -----
{
for (i = TYPE_NFIELDS (t) - 1; i >= 0; i--)
{
! char *tfn = TYPE_FIELD_NAME (t, i);
! if (tfn && !strcmp (tfn, name))
{
found = 1;
break;
***************
*** 1013,1019
{
for (i = TYPE_NFIELDS (t) - 1; i >= 0; i--)
{
! if (!strcmp (TYPE_FIELD_NAME (t, i), name))
{
return 1;
}
--- 1017,1024 -----
{
for (i = TYPE_NFIELDS (t) - 1; i >= 0; i--)
{
! char *tfn = TYPE_FIELD_NAME (t, i);
! if (tfn && !strcmp (tfn, name))
{
return 1;
}
***************
*** 1038,1044
{
for (i = TYPE_NFN_FIELDS (t) - 1; i >= 0; --i)
{
! if (!strcmp (TYPE_FN_FIELDLIST_NAME (t, i), name))
return 1;
}
--- 1043,1050 -----
{
for (i = TYPE_NFN_FIELDS (t) - 1; i >= 0; --i)
{
! char *tfn = TYPE_FN_FIELDLIST_NAME (t, i);
! if (tfn && !strcmp (tfn, name))
return 1;
}
***************
*** 1078,1084
{
for (i = TYPE_NFIELDS (t) - 1; i >= 0; i--)
{
! if (!strcmp (TYPE_FIELD_NAME (t, i), name))
{
if (TYPE_FIELD_PACKED (t, i))
error ("pointers to bitfield members not allowed");
--- 1084,1091 -----
{
for (i = TYPE_NFIELDS (t) - 1; i >= 0; i--)
{
! char *tfn = TYPE_FIELD_NAME (t, i);
! if (tfn && !strcmp (tfn, name))
{
if (TYPE_FIELD_PACKED (t, i))
error ("pointers to bitfield members not allowed");
***************
*** 1115,1121
{
for (i = TYPE_NFN_FIELDS (t) - 1; i >= 0; --i)
{
! if (!strcmp (TYPE_FN_FIELDLIST_NAME (t, i), name))
{
int j = TYPE_FN_FIELDLIST_LENGTH (t, i);
struct fn_field *f = TYPE_FN_FIELDLIST1 (t, i);
--- 1122,1129 -----
{
for (i = TYPE_NFN_FIELDS (t) - 1; i >= 0; --i)
{
! char *tfn = TYPE_FN_FIELDLIST_NAME (t, i);
! if (tfn && !strcmp (tfn, name))
{
int j = TYPE_FN_FIELDLIST_LENGTH (t, i);
struct fn_field *f = TYPE_FN_FIELDLIST1 (t, i);
Technical Details
Message-ID:
<8907271951.AA04635@elf.LABS.TEK.COM>Path:
arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!labs.labs.tek.com!eirikShow Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!labs.labs.tek.com!eirik From: eirik@labs.labs.tek.com (Eirik Fuller) Newsgroups: gnu.gdb.bug Subject: null pointer dereferences in gdb-3.2 Message-ID: <8907271951.AA04635@elf.LABS.TEK.COM> Date: 27 Jul 89 19:51:13 GMT Sender: daemon@tut.cis.ohio-state.edu Distribution: gnu Organization: GNUs Not Usenet Lines: 161