Diff for /embedaddon/sudo/compat/dlopen.c between versions 1.1.1.1 and 1.1.1.2

version 1.1.1.1, 2012/02/21 16:23:02 version 1.1.1.2, 2012/05/29 12:26:49
Line 77  sudo_dlsym(void *vhandle, const char *symbol) Line 77  sudo_dlsym(void *vhandle, const char *symbol)
     shl_t handle = vhandle;      shl_t handle = vhandle;
     void *value = NULL;      void *value = NULL;
   
    (void)shl_findsym(&handle, symbol, TYPE_UNDEFINED, &value);    /*
      * Note that the behavior of of RTLD_NEXT and RTLD_SELF 
      * differs from most implementations when called from
      * a shared library.
      */
     if (vhandle == RTLD_NEXT) {
         /* Iterate over all shared libs looking for symbol. */
         struct shl_descriptor *desc;
         int idx = 0;
         while (shl_get(idx++, &desc) == 0) {
             if (shl_findsym(&desc->handle, symbol, TYPE_UNDEFINED, &value) == 0)
                 break;
         }
     } else {
         if (vhandle == RTLD_DEFAULT)
             handle = NULL;
         else if (vhandle == RTLD_SELF)
             handle = PROG_HANDLE;
         (void)shl_findsym(&handle, symbol, TYPE_UNDEFINED, &value);
     }
   
     return value;      return value;
 }  }
Line 117  sudo_dlsym(void *handle, const char *symbol) Line 136  sudo_dlsym(void *handle, const char *symbol)
 {  {
     struct sudo_preload_table *sym;      struct sudo_preload_table *sym;
   
    for (sym = sudo_preload_table; sym->name != NULL; sym++) {    if (symbol != RTLD_NEXT && symbol != RTLD_DEFAULT && symbol != RTLD_SELF) {
        if (strcmp(symbol, sym->name) == 0)        for (sym = sudo_preload_table; sym->name != NULL; sym++) {
            return sym->address;            if (strcmp(symbol, sym->name) == 0)
                 return sym->address;
         }
     }      }
     return NULL;      return NULL;
 }  }

Removed from v.1.1.1.1  
changed lines
  Added in v.1.1.1.2


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>