Bug 494

Summary: sudo: unable to dlopen /usr/local/libexec/sudoers.so
Product: Sudo Reporter: Michael <mdunten>
Component: SudoAssignee: Todd C. Miller <Todd.Miller>
Status: RESOLVED FIXED    
Severity: normal CC: fennec_dru
Priority: normal    
Version: 1.8.1   
Hardware: HP   
OS: HP-UX   

Description Michael 2011-05-18 14:13:32 MDT
$ /usr/local/bin/sudo ls
sudo: unable to dlopen /usr/local/libexec/sudoers.so: Invalid argument
sudo: fatal error, unable to load plugins

Is there any other information that might help troubleshoot this?
Comment 1 Todd C. Miller 2011-05-18 14:28:17 MDT
What version of HP-UX is this and is the architecture PA-RISC or IA64?  Are you using one of the prebuilt HP-UX packages?  If so, which one?  If not, what configure options did you use when building sudo?

The output of the following commands would also be helpful:

$ ls -l /usr/local/libexec/sudoers.so
$ ldd /usr/local/libexec/sudoers.so
$ file /usr/local/libexec/sudoers.so
Comment 2 Michael 2011-05-18 15:45:29 MDT
HP-UX 11.31 IA64

$ ls -l /usr/local/libexec/sudoers.so
-rwxr-xr-x  1 root  sys  1150076 Apr 26 17:47 /usr/local/libexec/sudoers.so

$ ldd /usr/local/libexec/sudoers.so

/usr/local/libexec/sudoers.so:
        libpam.so.1 =>  /usr/lib/hpux32/libpam.so.1
        libc.so.1 =>    /usr/lib/hpux32/libc.so.1
        libdl.so.1 =>   /usr/lib/hpux32/libdl.so.1

$ file /usr/local/libexec/sudoers.so
/usr/local/libexec/sudoers.so:  ELF-32 executable object file - IA64

- I am working to track down the install information from the person who installed it. Let me know if anything from above points to any issues.

Thanks for the quick response
Comment 3 Michael 2011-05-18 15:48:23 MDT
Also,

sudo was built from source. Since there was not a build for HP-UX 11.31

Thanks
Comment 4 Todd C. Miller 2011-05-18 16:57:29 MDT
I would expect the HP-UX 11.23 binary package to work on HP-UX 11.31.  It looks like the sudoers.so file you have installed is not a valid shared object.  Here's what I see on an HP-UX 11.23 ia64 machine:

$ file /usr/local/libexec/sudoers.so 
/usr/local/libexec/sudoers.so:       ELF-32 shared object file - IA64

I believe you can run into this with the bundled HP C compiler which doesn't support building shared object file.  For some reason it only prints a warning instead of exiting with an error which makes detecting the problem via configure problematic.  If you build with gcc it should work correctly.
Comment 5 Todd C. Miller 2011-05-19 17:40:59 MDT
It seems that newer versions of the HP bundled compiler will identify themselves as such via "cc -V".  The output will look something like:

(Bundled) cc: HP aC++/ANSI C B3910B A.05.50 [May 15 2003]
Comment 6 Michael 2011-05-23 12:25:33 MDT
The HP-UX 11.23 binary package does work with 11.31. Thank You
Comment 7 Gautier 2011-07-12 11:06:51 MDT
Hello,

This is not fixed, it sill don't work when you compile it by yourself.
I can't use the binary package provided because I need LDAP Support.

[root@iu] cc -V
(Bundled) cc: HP C/aC++ B3910B A.06.12 [Oct 11 2006]

[root@iu] ldd /usr/libexec/sudoers.so

/usr/libexec/sudoers.so:
        libpam.so.1 =>  /usr/lib/hpux32/libpam.so.1
        libldap.so.2 => /usr/lib/hpux32/libldap.so.2
        libc.so.1 =>    /usr/lib/hpux32/libc.so.1
        librt.so.1 =>   /usr/lib/hpux32/librt.so.1
        libdl.so.1 =>   /usr/lib/hpux32/libdl.so.1
        libm.so.1 =>    /usr/lib/hpux32/libm.so.1
        libc.so.1 =>    /usr/lib/hpux32/libc.so.1
        libnspr4.so =>  /opt/ldapux/lib/hpux32/libnspr4.so
        libnss3.so =>   /opt/ldapux/lib/hpux32/libnss3.so
        libplc4.so =>   /opt/ldapux/lib/hpux32/libplc4.so
        libplds4.so =>  /opt/ldapux/lib/hpux32/libplds4.so
        libsoftokn3.so =>       /opt/ldapux/lib/hpux32/libsoftokn3.so
        libssl3.so =>   /opt/ldapux/lib/hpux32/libssl3.so
        libdl.so.1 =>   /usr/lib/hpux32/libdl.so.1
        libpthread.so.1 =>      /usr/lib/hpux32/libpthread.so.1
        libdl.so.1 =>   /usr/lib/hpux32/libdl.so.1

[root@iu0547:/users/rootsecu] file /usr/libexec/sudoers.so
/usr/libexec/sudoers.so:        ELF-32 executable object file - IA64

[root@iu0547:/users/rootsecu] sudo
sudo: unable to dlopen /usr/libexec/sudoers.so: Invalid argument
sudo: fatal error, unable to load plugins

My compile options :
./configure --with-ldap --exec-prefix=/usr  --with-pc-insults  --without-lecture
Comment 8 Todd C. Miller 2011-07-12 11:14:29 MDT
You cannot build sudo with the bundled compiler as it is unable to create shared objects.  You either need to install gcc or purchase the unbundled compiler from HP.
Comment 9 Todd C. Miller 2011-07-12 11:22:03 MDT
HP offers a gcc package for download that should be able to build sudo, see  http://h21007.www2.hp.com/portal/site/dspp/menuitem.863c3e4cbcdc3f3515b49c108973a801?ciid=2a08725cc2f02110725cc2f02110275d6e10RCRD
Comment 10 Gautier 2011-07-12 11:43:32 MDT
Thank you for your quick response, i will buy this compiler to get LDAP Support.

Thank for your great work.