summaryrefslogtreecommitdiffstats
path: root/source/nsswitch/winbind_nss.c
diff options
context:
space:
mode:
authorGerald Carter <jerry@samba.org>2002-06-17 18:36:36 +0000
committerGerald Carter <jerry@samba.org>2002-06-17 18:36:36 +0000
commit1e6e5b299c235b513095a76a4cd9fffc41e8fc9c (patch)
tree9f741529073ad411cc7328334e26d3e35b1d33f1 /source/nsswitch/winbind_nss.c
parenta11c5d7ad07d259d764aede4745d13f8163a8212 (diff)
downloadsamba-1e6e5b299c235b513095a76a4cd9fffc41e8fc9c.tar.gz
samba-1e6e5b299c235b513095a76a4cd9fffc41e8fc9c.tar.xz
samba-1e6e5b299c235b513095a76a4cd9fffc41e8fc9c.zip
beginning to sync up for 2.2.5 release....
Diffstat (limited to 'source/nsswitch/winbind_nss.c')
-rw-r--r--source/nsswitch/winbind_nss.c31
1 files changed, 21 insertions, 10 deletions
diff --git a/source/nsswitch/winbind_nss.c b/source/nsswitch/winbind_nss.c
index 0a49f5ec968..c087c6c7ad9 100644
--- a/source/nsswitch/winbind_nss.c
+++ b/source/nsswitch/winbind_nss.c
@@ -659,6 +659,17 @@ static NSS_STATUS fill_pwent(struct passwd *result,
strcpy(result->pw_shell, pw->pw_shell);
+ /* The struct passwd for Solaris has some extra fields which must
+ be initialised or nscd crashes. */
+
+#if HAVE_PASSWD_PW_COMMENT
+ result->pw_comment = "";
+#endif
+
+#if HAVE_PASSWD_PW_AGE
+ result->pw_age = "";
+#endif
+
return NSS_STATUS_SUCCESS;
}
@@ -856,7 +867,7 @@ _nss_winbind_getpwent_r(struct passwd *result, char *buffer,
}
ret = fill_pwent(result, &pw_cache[ndx_pw_cache],
- &buffer, &buflen);
+ &buffer, (int *)&buflen);
/* Out of memory - try again */
@@ -906,7 +917,7 @@ _nss_winbind_getpwuid_r(uid_t uid, struct passwd *result, char *buffer,
if (ret == NSS_STATUS_SUCCESS) {
ret = fill_pwent(result, &response.data.pw,
- &buffer, &buflen);
+ &buffer, (int *)&buflen);
if (ret == NSS_STATUS_TRYAGAIN) {
keep_response = True;
@@ -919,7 +930,7 @@ _nss_winbind_getpwuid_r(uid_t uid, struct passwd *result, char *buffer,
/* We've been called again */
- ret = fill_pwent(result, &response.data.pw, &buffer, &buflen);
+ ret = fill_pwent(result, &response.data.pw, &buffer, (int *)&buflen);
if (ret == NSS_STATUS_TRYAGAIN) {
keep_response = True;
@@ -968,7 +979,7 @@ _nss_winbind_getpwnam_r(const char *name, struct passwd *result, char *buffer,
if (ret == NSS_STATUS_SUCCESS) {
ret = fill_pwent(result, &response.data.pw, &buffer,
- &buflen);
+ (int *)&buflen);
if (ret == NSS_STATUS_TRYAGAIN) {
keep_response = True;
@@ -981,7 +992,7 @@ _nss_winbind_getpwnam_r(const char *name, struct passwd *result, char *buffer,
/* We've been called again */
- ret = fill_pwent(result, &response.data.pw, &buffer, &buflen);
+ ret = fill_pwent(result, &response.data.pw, &buffer, (int *)&buflen);
if (ret == NSS_STATUS_TRYAGAIN) {
keep_response = True;
@@ -1105,7 +1116,7 @@ _nss_winbind_getgrent_r(struct group *result,
ret = fill_grent(result, &gr_cache[ndx_gr_cache],
((char *)getgrent_response.extra_data)+mem_ofs,
- &buffer, &buflen);
+ &buffer, (int *)&buflen);
/* Out of memory - try again */
@@ -1165,7 +1176,7 @@ _nss_winbind_getgrnam_r(const char *name,
if (ret == NSS_STATUS_SUCCESS) {
ret = fill_grent(result, &response.data.gr,
response.extra_data,
- &buffer, &buflen);
+ &buffer, (int *)&buflen);
if (ret == NSS_STATUS_TRYAGAIN) {
keep_response = True;
@@ -1179,7 +1190,7 @@ _nss_winbind_getgrnam_r(const char *name,
/* We've been called again */
ret = fill_grent(result, &response.data.gr,
- response.extra_data, &buffer, &buflen);
+ response.extra_data, &buffer, (int *)&buflen);
if (ret == NSS_STATUS_TRYAGAIN) {
keep_response = True;
@@ -1228,7 +1239,7 @@ _nss_winbind_getgrgid_r(gid_t gid,
ret = fill_grent(result, &response.data.gr,
response.extra_data,
- &buffer, &buflen);
+ &buffer, (int *)&buflen);
if (ret == NSS_STATUS_TRYAGAIN) {
keep_response = True;
@@ -1242,7 +1253,7 @@ _nss_winbind_getgrgid_r(gid_t gid,
/* We've been called again */
ret = fill_grent(result, &response.data.gr,
- response.extra_data, &buffer, &buflen);
+ response.extra_data, &buffer, (int *)&buflen);
if (ret == NSS_STATUS_TRYAGAIN) {
keep_response = True;