public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] elf: Assert range of ns argument in _dl_debug_initialize
@ 2021-06-23 12:42 Florian Weimer
  2021-06-27 22:15 ` Carlos O'Donell
  2021-06-28  7:26 ` Andreas Schwab
  0 siblings, 2 replies; 6+ messages in thread
From: Florian Weimer @ 2021-06-23 12:42 UTC (permalink / raw)
  To: libc-alpha

This does not fix any bugs as such, but makes it more obvious
if _dl_debug_initialize is called with invalid arguments
(which would otherwise cause the function to clobber unrelated
data).

Tested on i686-linux-gnu and x86_64-linux-gnu.

---
 elf/dl-debug.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/elf/dl-debug.c b/elf/dl-debug.c
index 2cd5f09753..85b087455e 100644
--- a/elf/dl-debug.c
+++ b/elf/dl-debug.c
@@ -16,6 +16,8 @@
    License along with the GNU C Library; if not, see
    <https://www.gnu.org/licenses/>.  */
 
+#include <array_length.h>
+#include <assert.h>
 #include <ldsodefs.h>
 
 
@@ -49,7 +51,11 @@ _dl_debug_initialize (ElfW(Addr) ldbase, Lmid_t ns)
   if (ns == LM_ID_BASE)
     r = &_r_debug;
   else
-    r = &GL(dl_ns)[ns]._ns_debug;
+    {
+      assert (ns >= 0);
+      assert (ns < array_length (GL (dl_ns)));
+      r = &GL(dl_ns)[ns]._ns_debug;
+    }
 
   if (r->r_map == NULL || ldbase != 0)
     {


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

end of thread, other threads:[~2021-06-28  8:31 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-23 12:42 [PATCH] elf: Assert range of ns argument in _dl_debug_initialize Florian Weimer
2021-06-27 22:15 ` Carlos O'Donell
2021-06-27 22:51   ` Florian Weimer
2021-06-28  2:15     ` Carlos O'Donell
2021-06-28  8:31       ` Florian Weimer
2021-06-28  7:26 ` Andreas Schwab

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).