glibc 2.2 (ldconfig has a bug)

Denis Zaitsev zzz@cd-club.ru
Tue Nov 14 07:40:00 GMT 2000


Now it's indeed ldconfig... Here is the patch.


--- glibc-2.2/elf/ldconfig.c	Tue Nov 14 20:05:26 2000
+++ glibc-2.2/elf/ldconfig.c	Tue Nov 14 20:05:02 2000
@@ -370,13 +370,13 @@
 
   /* Get complete path.  */
   full_libname = alloca (strlen (path) + strlen (libname) + 2);
-  full_soname = alloca (strlen (path) + strlen (libname) + 2);
+  full_soname = alloca (strlen (path) + strlen (soname) + 2);
   sprintf (full_libname, "%s/%s", path, libname);
   sprintf (full_soname, "%s/%s", path, soname);
   if (opt_chroot)
     {
       real_full_libname = alloca (strlen (real_path) + strlen (libname) + 2);
-      real_full_soname = alloca (strlen (real_path) + strlen (libname) + 2);
+      real_full_soname = alloca (strlen (real_path) + strlen (soname) + 2);
       sprintf (real_full_libname, "%s/%s", real_path, libname);
       sprintf (real_full_soname, "%s/%s", real_path, soname);
     }


It's merrily. The error was sitting silently until the release... Then
ld-2.1.97.so became ld-2.2.so, its strlen becomes 3 bytes shorter and
finito... For other names (on my system) it is stiil working without
the patch.


More information about the Libc-alpha mailing list