This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: [commited] small changes to fix hpux-cc compile
- From: Randolph Chung <randolph at tausq dot org>
- To: Michael Elizabeth Chastain <mec dot gnu at mindspring dot com>
- Cc: gdb-patches at sources dot redhat dot com
- Date: Sun, 16 May 2004 10:21:01 -0700
- Subject: Re: [commited] small changes to fix hpux-cc compile
- References: <20040516155532.8F75E4B104@berman.michael-chastain.com>
- Reply-to: Randolph Chung <randolph at tausq dot org>
> So what happens if your hardcoded auto array of size 4 ever overflows?
> We get a nasty bit of stack corruption. I hate seeing code like this
> creep into gdb. It works until something else changes and then it
> quietly crashes or prints random bad results.
ok, how about like this then? this is consistent with how __dld_flags
isused in other parts of somsolib.c
2004-05-16 Randolph Chung <tausq@debian.org>
* somsolib.c (som_solib_remove_inferior_hook): Make all the size
references to dld_flags_buffer consistent.
Index: somsolib.c
===================================================================
RCS file: /cvs/src/src/gdb/somsolib.c,v
retrieving revision 1.33
diff -u -p -r1.33 somsolib.c
--- somsolib.c 16 May 2004 04:33:41 -0000 1.33
+++ somsolib.c 16 May 2004 17:19:04 -0000
@@ -1081,16 +1081,13 @@ som_solib_remove_inferior_hook (int pid)
msymbol = lookup_minimal_symbol ("__dld_flags", NULL, NULL);
addr = SYMBOL_VALUE_ADDRESS (msymbol);
- status = target_read_memory (addr, dld_flags_buffer, TARGET_INT_BIT / TARGET_CHAR_BIT);
+ status = target_read_memory (addr, dld_flags_buffer, 4);
- dld_flags_value = extract_unsigned_integer (dld_flags_buffer,
- sizeof (dld_flags_value));
+ dld_flags_value = extract_unsigned_integer (dld_flags_buffer, 4);
dld_flags_value &= ~DLD_FLAGS_HOOKVALID;
- store_unsigned_integer (dld_flags_buffer,
- sizeof (dld_flags_value),
- dld_flags_value);
- status = target_write_memory (addr, dld_flags_buffer, TARGET_INT_BIT / TARGET_CHAR_BIT);
+ store_unsigned_integer (dld_flags_buffer, 4, dld_flags_value);
+ status = target_write_memory (addr, dld_flags_buffer, 4);
do_cleanups (old_cleanups);
}
--
Randolph Chung
Debian GNU/Linux Developer, hppa/ia64 ports
http://www.tausq.org/