dl-load.c in glibc-2.2 branch

Andreas Schwab schwab@suse.de
Mon Feb 4 08:16:00 GMT 2002


This fixes an off-by-one that causes crashes due to reading past EOS,
triggered by the changes in _dl_dst_count and _dl_dst_substitute.

Andreas.

2002-02-04  Andreas Schwab  <schwab@suse.de>

	* elf/dl-load.c (is_dst): Fix return value as expected by caller.

--- elf/dl-load.c.~1.184.2.2.~	Mon Feb  4 11:29:04 2002
+++ elf/dl-load.c	Mon Feb  4 16:26:48 2002
@@ -165,16 +165,16 @@
   size_t len;
 
   if (strncmp (name, str, cmplen) == 0)
-    len = cmplen + 1;
+    len = cmplen;
   else if (strncmp (name, str + 1, cmplen - 2) == 0
 	   && (name[cmplen - 2] == '\0' || name[cmplen - 2] == '/'
 	       || (is_path && name[cmplen - 2] == ':')))
-    len = cmplen - 1;
+    len = cmplen - 2;
   else
     return 0;
 
   if (__builtin_expect (secure, 0)
-      && ((name[len - 1] != '\0' && (!is_path || name[len - 1] != ':'))
+      && ((name[len] != '\0' && (!is_path || name[len] != ':'))
 	  || (name != start + 1 && (!is_path || name[-2] != ':'))))
     return 0;
 

-- 
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE GmbH, Deutschherrnstr. 15-19, D-90429 Nürnberg
Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."



More information about the Libc-hacker mailing list