Problem po upgradzie openldap i nss_ldap

Jarek Koszuk heretyk w pld-linux.org
Pią, 11 Sie 2006, 11:18:31 CEST


On Fri, August 11 2006 10:49, Jarek Koszuk wrote:
> Zrobiłem taki mały test:
> --- CUT HERE ---
> #include <stdio.h>
> #include <sys/types.h>
> #include <pwd.h>
>
> int main()
> {
>     struct passwd *pwent;
>     const uid_t uid  = 5000;
>     const char * user = "ldapuser";
>
>     pwent = getpwuid(uid);
>     if (pwent) {
>         printf("getpwuid(%d) = %s, %d, %d\n", uid, pwent->pw_name,
>                 pwent->pw_uid, pwent->pw_gid);
>     }
>     else {
>         printf("getpwuid(%d) = NULL\n", uid);
>     }
>
>     pwent = getpwnam(user);
>     if (pwent) {
>         printf("getpwnam(%s) = %s, %d, %d\n", user, pwent->pw_name,
>                 pwent->pw_uid, pwent->pw_gid);
>     }
>     else {
>         printf("getpwnam(%s) = NULL\n", user);
>     }
>
>     return 0;
> }
> --- CUT HERE ---
> Użytkownik ldapuser o uidzie 5000 jest zdefiniowany w LDAP.

Jest jeszcze ciekawiej. W powyższym kodzie getpwuid() się nie łączy z LDAP,
a getpwnam() łączy się. Jeśli zamienię te funkcje miejscami, wtedy jest na
odwrót getpwnam() się nie udaje, a getpwuid() tak. Czyli nie udaje się
pierwsze wywołanie funkcji korzystającej z nss_ldap.

Skompilowałem nss_ldap z opcjami debugowania - może coś mi się uda znaleźć.

Jarek



Więcej informacji o liście dyskusyjnej pld-users-pl