This is the mail archive of the
rda@sources.redhat.com
mailing list for the rda project.
Re: [PATCH] thread-db.c: Avoid segfault by making sure that ``reg''is initialized
- From: Kevin Buettner <kevinb at redhat dot com>
- To: rda at sources dot redhat dot com
- Date: Mon, 13 Dec 2004 14:25:38 -0700
- Subject: Re: [PATCH] thread-db.c: Avoid segfault by making sure that ``reg''is initialized
- Organization: Red Hat
- References: <20041118180240.69493a51@saguaro>
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. */