Update.
authorUlrich Drepper <drepper@redhat.com>
Wed, 3 Feb 1999 10:30:07 +0000 (10:30 +0000)
committerUlrich Drepper <drepper@redhat.com>
Wed, 3 Feb 1999 10:30:07 +0000 (10:30 +0000)
1999-02-03  Ulrich Drepper  <drepper@cygnus.com>

* elf/dlsym.c (dlsym_doit): If no symbol for RTLD_NEXT is found
initialize ref element of args object so that dlsym does not dump
a core.
* elf/dlvsym.c (dlvsym_doit): Likewise.

ChangeLog
elf/dlsym.c
elf/dlvsym.c

index c732150..55b9ac8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+1999-02-03  Ulrich Drepper  <drepper@cygnus.com>
+
+       * elf/dlsym.c (dlsym_doit): If no symbol for RTLD_NEXT is found
+       initialize ref element of args object so that dlsym does not dump
+       a core.
+       * elf/dlvsym.c (dlvsym_doit): Likewise.
+
 1999-02-03  Jakub Jelinek  <jj@ultra.linux.cz>
 
        * sysdeps/unix/sysv/linux/sparc/sparc64/pipe.S: Set branch
index 64d0cab..5753f54 100644 (file)
@@ -1,5 +1,5 @@
 /* Look up a symbol in a shared object loaded by `dlopen'.
-   Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+   Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -65,6 +65,16 @@ RTLD_NEXT used in code not dynamically loaded"));
 
       args->loadbase = _dl_lookup_symbol_skip (args->name, &args->ref,
                                               l->l_local_scope, NULL, match);
+
+      if (args->loadbase == 0)
+       {
+         /* This means that no such symbol is defined.  In this case we
+            have to provide a phony Elfxx_Sym entry since the value is
+            referenced in `dlsym'.  */
+         static const ElfW(Sym) null_result;
+
+         args->ref = &null_result;
+       }
     }
   else
     {
index cee0e7f..b100a2e 100644 (file)
@@ -1,5 +1,5 @@
 /* Look up a versioned symbol in a shared object loaded by `dlopen'.
-   Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+   Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -71,6 +71,16 @@ RTLD_NEXT used in code not dynamically loaded"));
                                                         l->l_local_scope,
                                                         NULL, &args->version,
                                                         match);
+
+      if (args->loadbase == 0)
+       {
+         /* This means that no such symbol is defined.  In this case we
+            have to provide a phony Elfxx_Sym entry since the value is
+            referenced in `dlsym'.  */
+         static const ElfW(Sym) null_result;
+
+         args->ref = &null_result;
+       }
     }
   else
     {