Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* [patch] Fix solib list reading asan error (for PR 8882)
@ 2014-02-26 22:09 Jan Kratochvil
  2014-02-27 20:17 ` [commit] " Jan Kratochvil
  0 siblings, 1 reply; 4+ messages in thread
From: Jan Kratochvil @ 2014-02-26 22:09 UTC (permalink / raw)
  To: gdb-patches; +Cc: Andreas Arnez

[-- Attachment #1: Type: text/plain, Size: 1415 bytes --]

Hi,

runtest gdb.base/corefile.exp

==23174== ERROR: AddressSanitizer: heap-use-after-free on address 0x604400008c88 at pc 0x68f0be bp 0x7fffae9d7490 sp 0x7fffae9d7480
READ of size 8 at 0x604400008c88 thread T0
    #0 0x68f0bd in svr4_read_so_list (/home/jkratoch/redhat/gdb-clean/gdb/gdb+0x68f0bd)
    #1 0x68f64e in svr4_current_sos_direct (/home/jkratoch/redhat/gdb-clean/gdb/gdb+0x68f64e)
    #2 0x68f757 in svr4_current_sos (/home/jkratoch/redhat/gdb-clean/gdb/gdb+0x68f757)
    #3 0xcebbff in update_solib_list (/home/jkratoch/redhat/gdb-clean/gdb/gdb+0xcebbff)
0x604400008c88 is located 8 bytes inside of 1104-byte region [0x604400008c80,0x6044000090d0)
freed by thread T0 here:
    #0 0x7f52677500f9 (/lib64/libasan.so.0+0x160f9)
    #1 0xd2c68a in xfree (/home/jkratoch/redhat/gdb-clean/gdb/gdb+0xd2c68a)
    #2 0xceb364 in free_so (/home/jkratoch/redhat/gdb-clean/gdb/gdb+0xceb364)
    #3 0xca59f8 in do_free_so (/home/jkratoch/redhat/gdb-clean/gdb/gdb+0xca59f8)
    #4 0x93432a in do_my_cleanups (/home/jkratoch/redhat/gdb-clean/gdb/gdb+0x93432a)
    #5 0x934406 in do_cleanups (/home/jkratoch/redhat/gdb-clean/gdb/gdb+0x934406)
    #6 0x68efa9 in svr4_read_so_list (/home/jkratoch/redhat/gdb-clean/gdb/gdb+0x68efa9)

I did not notice it during my review in:
	Re: [PATCH v2] Skip vDSO when reading SO list (PR 8882)
	https://sourceware.org/ml/gdb-patches/2013-09/msg00888.html

I will check it in.


Jan

[-- Attachment #2: 1 --]
[-- Type: text/plain, Size: 1372 bytes --]

Additional PR 8882 fix.

gdb/
2014-02-26  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Additional PR 8882 fix.
	* solib-svr4.c (svr4_read_so_list): Change first to first_l_name.

diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c
index e2e173a..6c4dff7 100644
--- a/gdb/solib-svr4.c
+++ b/gdb/solib-svr4.c
@@ -1306,7 +1306,7 @@ static int
 svr4_read_so_list (CORE_ADDR lm, CORE_ADDR prev_lm,
 		   struct so_list ***link_ptr_ptr, int ignore_first)
 {
-  struct so_list *first = NULL;
+  CORE_ADDR first_l_name;
   CORE_ADDR next_lm;
 
   for (; lm != 0; prev_lm = lm, lm = next_lm)
@@ -1346,7 +1346,7 @@ svr4_read_so_list (CORE_ADDR lm, CORE_ADDR prev_lm,
 	{
 	  struct svr4_info *info = get_svr4_info ();
 
-	  first = new;
+	  first_l_name = new->lm_info->l_name;
 	  info->main_lm_addr = new->lm_info->lm_addr;
 	  do_cleanups (old_chain);
 	  continue;
@@ -1361,8 +1361,7 @@ svr4_read_so_list (CORE_ADDR lm, CORE_ADDR prev_lm,
 	     inferior executable, then this is not a normal shared
 	     object, but (most likely) a vDSO.  In this case, silently
 	     skip it; otherwise emit a warning. */
-	  if (first == NULL
-	      || new->lm_info->l_name != first->lm_info->l_name)
+	  if (first_l_name == 0 || new->lm_info->l_name != first_l_name)
 	    warning (_("Can't read pathname for load map: %s."),
 		     safe_strerror (errcode));
 	  do_cleanups (old_chain);

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [commit] [patch] Fix solib list reading asan error (for PR 8882)
  2014-02-26 22:09 [patch] Fix solib list reading asan error (for PR 8882) Jan Kratochvil
@ 2014-02-27 20:17 ` Jan Kratochvil
  2014-02-27 20:56   ` Mark Kettenis
  0 siblings, 1 reply; 4+ messages in thread
From: Jan Kratochvil @ 2014-02-27 20:17 UTC (permalink / raw)
  To: gdb-patches; +Cc: Andreas Arnez

On Wed, 26 Feb 2014 23:09:18 +0100, Jan Kratochvil wrote:
> gdb/
> 2014-02-26  Jan Kratochvil  <jan.kratochvil@redhat.com>
> 
> 	Additional PR 8882 fix.
> 	* solib-svr4.c (svr4_read_so_list): Change first to first_l_name.

Checked in already as it is complicating the testing under asan:
	c91550fc5d8dae5f1140bca649690fa13e5276e9


Jan


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [commit] [patch] Fix solib list reading asan error (for PR 8882)
  2014-02-27 20:17 ` [commit] " Jan Kratochvil
@ 2014-02-27 20:56   ` Mark Kettenis
  2014-02-27 20:58     ` Jan Kratochvil
  0 siblings, 1 reply; 4+ messages in thread
From: Mark Kettenis @ 2014-02-27 20:56 UTC (permalink / raw)
  To: jan.kratochvil; +Cc: gdb-patches, arnez

> Date: Thu, 27 Feb 2014 21:17:31 +0100
> From: Jan Kratochvil <jan.kratochvil@redhat.com>
> 
> On Wed, 26 Feb 2014 23:09:18 +0100, Jan Kratochvil wrote:
> > gdb/
> > 2014-02-26  Jan Kratochvil  <jan.kratochvil@redhat.com>
> > 
> > 	Additional PR 8882 fix.
> > 	* solib-svr4.c (svr4_read_so_list): Change first to first_l_name.
> 
> Checked in already as it is complicating the testing under asan:
> 	c91550fc5d8dae5f1140bca649690fa13e5276e9

Broke my build because ithe compiler warned that first_l_name may be
used uninitialized.  And I agree, so I committed the diff below as
obvious.

From c725e7b6878220bbeac44b86a2581d74f16b497c Mon Sep 17 00:00:00 2001
From: Mark Kettenis <kettenis@gnu.org>
Date: Thu, 27 Feb 2014 21:51:08 +0100
Subject: [PATCH] Prevent compiler warning.

GCC 4.2.1 complains about first_l_name may be used uninitialized, and my brain
agrees.

gdb/ChangeLog:

        * solib-svr4.c (svr4_read_so_list): Initialize first_l_name to 0.
---
 gdb/ChangeLog    | 4 ++++
 gdb/solib-svr4.c | 2 +-
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 6a8fc0c..c99510c 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,9 @@
 2014-02-27  Mark Kettenis  <kettenis@gnu.org>
 
+	* solib-svr4.c (svr4_read_so_list): Initialize first_l_name to 0.
+
+2014-02-27  Mark Kettenis  <kettenis@gnu.org>
+
 	* sparc-nat.c (sparc_xfer_wcookie): Always use process ID.
 
 2014-02-27  Jan Kratochvil  <jan.kratochvil@redhat.com>
diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c
index 6c4dff7..4c94f9f 100644
--- a/gdb/solib-svr4.c
+++ b/gdb/solib-svr4.c
@@ -1306,7 +1306,7 @@ static int
 svr4_read_so_list (CORE_ADDR lm, CORE_ADDR prev_lm,
 		   struct so_list ***link_ptr_ptr, int ignore_first)
 {
-  CORE_ADDR first_l_name;
+  CORE_ADDR first_l_name = 0;
   CORE_ADDR next_lm;
 
   for (; lm != 0; prev_lm = lm, lm = next_lm)
-- 
1.8.5.3



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [commit] [patch] Fix solib list reading asan error (for PR 8882)
  2014-02-27 20:56   ` Mark Kettenis
@ 2014-02-27 20:58     ` Jan Kratochvil
  0 siblings, 0 replies; 4+ messages in thread
From: Jan Kratochvil @ 2014-02-27 20:58 UTC (permalink / raw)
  To: Mark Kettenis; +Cc: gdb-patches, arnez

On Thu, 27 Feb 2014 21:56:41 +0100, Mark Kettenis wrote:
> And I agree, so I committed the diff below as obvious.

I also agree.


Thanks,
Jan


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2014-02-27 20:58 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-02-26 22:09 [patch] Fix solib list reading asan error (for PR 8882) Jan Kratochvil
2014-02-27 20:17 ` [commit] " Jan Kratochvil
2014-02-27 20:56   ` Mark Kettenis
2014-02-27 20:58     ` Jan Kratochvil

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox