1 2011-07-01 Andreas Schwab <schwab@redhat.com>
3 * nis/nss_compat/compat-pwd.c (getpwent_next_nss_netgr): Query NIS
4 domain only when needed.
6 Index: glibc-2.12-2-gc4ccff1/nis/nss_compat/compat-pwd.c
7 ===================================================================
8 --- glibc-2.12-2-gc4ccff1.orig/nis/nss_compat/compat-pwd.c
9 +++ glibc-2.12-2-gc4ccff1/nis/nss_compat/compat-pwd.c
10 @@ -360,7 +360,7 @@ getpwent_next_nss_netgr (const char *nam
11 char *group, char *buffer, size_t buflen,
14 - char *curdomain, *host, *user, *domain, *p2;
15 + char *curdomain = NULL, *host, *user, *domain, *p2;
19 @@ -369,15 +369,7 @@ getpwent_next_nss_netgr (const char *nam
21 return NSS_STATUS_UNAVAIL;
23 - if (yp_get_default_domain (&curdomain) != YPERR_SUCCESS)
25 - ent->netgroup = false;
27 - give_pwd_free (&ent->pwd);
28 - return NSS_STATUS_UNAVAIL;
31 - if (ent->first == true)
34 memset (&ent->netgrdata, 0, sizeof (struct __netgrent));
35 __internal_setnetgrent (group, &ent->netgrdata);
36 @@ -403,8 +395,19 @@ getpwent_next_nss_netgr (const char *nam
37 if (user == NULL || user[0] == '-')
40 - if (domain != NULL && strcmp (curdomain, domain) != 0)
44 + if (curdomain == NULL
45 + && yp_get_default_domain (&curdomain) != YPERR_SUCCESS)
47 + __internal_endnetgrent (&ent->netgrdata);
48 + ent->netgroup = false;
49 + give_pwd_free (&ent->pwd);
50 + return NSS_STATUS_UNAVAIL;
52 + if (strcmp (curdomain, domain) != 0)
56 /* If name != NULL, we are called from getpwnam. */
58 Index: glibc-2.12-2-gc4ccff1/nis/nss_compat/compat-spwd.c
59 ===================================================================
60 --- glibc-2.12-2-gc4ccff1.orig/nis/nss_compat/compat-spwd.c
61 +++ glibc-2.12-2-gc4ccff1/nis/nss_compat/compat-spwd.c
62 @@ -317,7 +317,7 @@ getspent_next_nss_netgr (const char *nam
63 char *group, char *buffer, size_t buflen,
66 - char *curdomain, *host, *user, *domain, *p2;
67 + char *curdomain = NULL, *host, *user, *domain, *p2;
71 @@ -327,15 +327,7 @@ getspent_next_nss_netgr (const char *nam
72 if (ent->setent_status != NSS_STATUS_SUCCESS)
73 return ent->setent_status;
75 - if (yp_get_default_domain (&curdomain) != YPERR_SUCCESS)
77 - ent->netgroup = false;
79 - give_spwd_free (&ent->pwd);
80 - return NSS_STATUS_UNAVAIL;
83 - if (ent->first == true)
86 memset (&ent->netgrdata, 0, sizeof (struct __netgrent));
87 __internal_setnetgrent (group, &ent->netgrdata);
88 @@ -362,8 +354,19 @@ getspent_next_nss_netgr (const char *nam
89 if (user == NULL || user[0] == '-')
92 - if (domain != NULL && strcmp (curdomain, domain) != 0)
96 + if (curdomain == NULL
97 + && yp_get_default_domain (&curdomain) != YPERR_SUCCESS)
99 + __internal_endnetgrent (&ent->netgrdata);
100 + ent->netgroup = false;
101 + give_spwd_free (&ent->pwd);
102 + return NSS_STATUS_UNAVAIL;
104 + if (strcmp (curdomain, domain) != 0)
108 /* If name != NULL, we are called from getpwnam */