[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
AW: need help with solaris 8
Hallo everybody,
it looks like following happens:
we have following in pam.conf
other password sufficient /usr/lib/security/$ISA/pam_ldap.so.1
other password sufficient /usr/lib/security/$ISA/pam_unix.so.1
imagine I start passwd and enter wrong password three times.
passwd loads nss_ldap and afterwords pam_unix.so.1
pam_unix.so.1 for whatsoever reason looks like this:
ldd /usr/lib/security/pam_unix.so.1
libc.so.1 => /usr/lib/libc.so.1
libpam.so.1 => /usr/lib/libpam.so.1
libnsl.so.1 => /usr/lib/libnsl.so.1
libcmd.so.1 => /usr/lib/libcmd.so.1
libmp.so.2 => /usr/lib/libmp.so.2
libsldap.so.1 => /usr/lib/libsldap.so.1
libdl.so.1 => /usr/lib/libdl.so.1
libldap.so.4 => /usr/lib/libldap.so.4
libdoor.so.1 => /usr/lib/libdoor.so.1
libsocket.so.1 => /usr/lib/libsocket.so.1
libresolv.so.2 => /usr/lib/libresolv.so.2
/usr/platform/SUNW,UltraAX-i2/lib/libc_psr.so.1
please notice there
libsldap.so.1 => /usr/lib/libsldap.so.1
now
ldd /usr/lib/libsldap.so.1
libnsl.so.1 => /usr/lib/libnsl.so.1
libldap.so.4 => /usr/lib/libldap.so.4
libc.so.1 => /usr/lib/libc.so.1
libdoor.so.1 => /usr/lib/libdoor.so.1
libdl.so.1 => /usr/lib/libdl.so.1
libmp.so.2 => /usr/lib/libmp.so.2
libsocket.so.1 => /usr/lib/libsocket.so.1
libresolv.so.2 => /usr/lib/libresolv.so.2
/usr/platform/SUNW,UltraAX-i2/lib/libc_psr.so.1
what happens for me looks like that due to pam_unix openldap library will be thrown away and substituted with the one from sun.
What stepping through debugger shows is that ber_free function will have now (after pam_unix has been executed) six arguments instead of two from openldap:
main(0x34800, 0xffbefc84, 0x34800, 0x34800, 0x0, 0x3225c)
0x14a7c(0x1, 0x1, 0xff326000, 0x0, 0x2, 0x0)
pam_end(0x359e0, 0x0, 0xff326000, 0x36c80, 0x36c80, 0x381db)
_pam_ldap_cleanup_session(pamh = 0x36c80, data = 0x35998, error_status = 0)
ldap_unbind(ld = 0x37bf8)
ldap_unbind_ext(ld = 0x37bf8, sctrls = (nil), cctrls = (nil))
ldap_ld_free(ld = 0x37bf8, close = 1, sctrls = (nil), cctrls = (nil))
ldap_free_connection(ld = 0x37bf8, lc = 0x37d48, force = 1, unbind = 1)
ldap_send_unbind(ld = 0x37bf8, sb = 0x364d8, sctrls = (nil), cctrls = (nil))
ber_flush(sb = 0x364d8, ber = 0x39da0, freeit = 1)
ber_free(0x39da0, 0x1, 0x7, 0x0, 0xff3e2660, 0xfef6c8e7)
free(0x20001, 0x0, 0x0, 0x0, 0x0, 0x0)
_free_unlocked(0x20001, 0xff13801c, 0x20001, 0xff13801c, 0x21a7c, 0xff0c2664)
attempt to execute ber_free caused
signal BUS (invalid address alignment) in _free_unlocked at 0xff0c26bc
0xff0c26bc: _free_unlocked+0x0040: ld [%i0 - 0x8], %o0
Current function is ber_flush
(dbx)
Most probably my interpretation is wrong, but still why than passwd crashes?
Do you have any suggestions?
Thanx a lot in advance, vadim tarassov.
-----Ursprüngliche Nachricht-----
Von: Kurt D. Zeilenga [mailto:Kurt@OpenLDAP.org]
Gesendet: Mittwoch, 8. Januar 2003 22:55
An: vadim tarassov
Cc: openldap-software@OpenLDAP.org
Betreff: Re: need help with solaris 8
Sounds like something you should take to the pamldap@padl.com
mailing list....
Kurt
At 01:11 PM 1/8/2003, vadim tarassov wrote:
>Hallo everybody,
>
>it looks like I am not able to understand what's happening on solaris 8 with pam_ldap-157 and openldap 2.1.8 - 2.1.10.
>We have compiled openldap with pam_ldap and nss_ldap using forte 6u2. Everything works almost as expected besides of the fact that passwd crashes badly when trying to change password for a user which is not defined in ldap, but is defined in files. pam_ldap does not find anything in ldap (which is OK), pam_unix does find, it changes password and afterwards everything crashes. dbx shows that crash happens in function ldap_unbind, which is called by
>
>static void
>_pam_ldap_cleanup_session (pam_handle_t * pamh, void *data, int error_status)
>
>in pam_ldap.c
>
>truss shows that bus error happens when trying to write 7 bytes to file descriptor which has been obtained by so_socket call.
>
>Is there anybody who can may point on what we are doing wrong?
>
>Thanx a lot in advance, vadim tarassov.
>
>