This is the mail archive of the rda@sources.redhat.com mailing list for the rda project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] thread-db.c: Avoid segfault by making sure that ``reg''is initialized


On Thu, 18 Nov 2004 18:02:40 -0700
Kevin Buettner <kevinb@redhat.com> wrote:

> [Hopefully, this'll end up in the right list this time...]
> 
> I've just committed the patch below.  As indicated by the subject line, this
> patch prevents a segfault when thread_db_set_thread_reg() returns an
> uninitialized ``reg''.  (This was happening on Fedora Core 2 due to lack of
> xregset support.)
> 
> 	* thread-db.c (thread_db_set_thread_reg): Don't allow a successful
> 	return without first initializing ``reg''.

This patch was wrong - I didn't look closely enough at the result of
applying a patch from a branch.  Hopefully, this time I've applied the
correct fix...

	* thread-db.c (thread_db_get_thread_reg): Don't allow a successful
	return without first initializing ``reg''.
	(thread_db_set_thread_reg): Remove code intended to for
	thread_db_get_thread_reg().

Index: thread-db.c
===================================================================
RCS file: /cvs/src/src/rda/unix/thread-db.c,v
retrieving revision 1.10
diff -u -p -r1.10 thread-db.c
--- thread-db.c	18 Nov 2004 21:40:02 -0000	1.10
+++ thread-db.c	13 Dec 2004 21:22:00 -0000
@@ -1980,6 +1980,10 @@ thread_db_get_thread_reg (struct gdbserv
   GREGSET_T gregset;
   td_err_e ret;
 
+  /* Initialize reg to 0 in the event that we return early due to a
+     register being unsupported.  */
+  gdbserv_ulonglong_to_reg (serv, 0LL, reg);
+
   if (thread == NULL)
     thread = process->event_thread;	/* Default to the event thread. */
 
@@ -2117,10 +2121,6 @@ thread_db_set_thread_reg (struct gdbserv
   GREGSET_T gregset;
   td_err_e ret;
 
-  /* Initialize reg to 0 in the event that we return early due to a
-     register being unsupported.  */
-  gdbserv_ulonglong_to_reg (serv, 0LL, reg);
-
   if (thread == NULL)
     thread = process->event_thread;	/* Default to the event thread. */
 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]