+2003-08-25 Jakub Jelinek <jakub@redhat.com>
+
+ * elf/ldconfig.c (search_dir): Treat symlink as regular file
+ if it won't point to itself unless it is .so symlink for the linker.
+
2003-08-25 Ulrich Drepper <drepper@redhat.com>
* libio/libio.h (_IO_fwide): In the mode==0 optimization, don't
continue;
}
- /* Links will just point to itself. */
+
+ /* A link may just point to itself. */
if (is_link)
{
- free (soname);
- soname = xstrdup (direntry->d_name);
- }
+ /* If the path the link points to isn't its soname and it is not
+ .so symlink for ld(1) only, we treat it as a normal file. */
+ char *real_base_name = basename (real_name);
+
+ if (strcmp (real_base_name, soname) != 0)
+ {
+ len = strlen (real_base_name);
+ if (len < strlen (".so")
+ || strcmp (real_base_name + len - strlen (".so"), ".so") != 0
+ || strncmp (real_base_name, soname, len) != 0)
+ is_link = 0;
+ }
+ }
if (real_name != real_file_name)
free (real_name);
+ if (is_link)
+ {
+ free (soname);
+ soname = xstrdup (direntry->d_name);
+ }
+
if (flag == FLAG_ELF
&& (entry->flag == FLAG_ELF_LIBC5
|| entry->flag == FLAG_ELF_LIBC6))