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.
This commit is contained in:
Ulrich Drepper 2003-08-25 21:50:13 +00:00
parent 1c8c5277a7
commit 82d8607da1
2 changed files with 26 additions and 4 deletions

View File

@ -1,3 +1,8 @@
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

View File

@ -787,16 +787,33 @@ search_dir (const struct dir_entry *entry)
continue;
}
/* Links will just point to itself. */
/* A link may just point to itself. */
if (is_link)
{
/* 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 (real_name != real_file_name)
free (real_name);
if (flag == FLAG_ELF
&& (entry->flag == FLAG_ELF_LIBC5
|| entry->flag == FLAG_ELF_LIBC6))