Update.
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:
parent
1c8c5277a7
commit
82d8607da1
@ -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
|
||||
|
@ -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))
|
||||
|
Loading…
Reference in New Issue
Block a user