diff options
Diffstat (limited to 'source/nsswitch/winbind_nss.c')
-rw-r--r-- | source/nsswitch/winbind_nss.c | 62 |
1 files changed, 28 insertions, 34 deletions
diff --git a/source/nsswitch/winbind_nss.c b/source/nsswitch/winbind_nss.c index 0b4c0ce1d08..250e2df59be 100644 --- a/source/nsswitch/winbind_nss.c +++ b/source/nsswitch/winbind_nss.c @@ -21,7 +21,8 @@ Boston, MA 02111-1307, USA. */ -#include "winbind_client.h" +#include "winbind_nss_config.h" +#include "winbindd_nss.h" #ifdef HAVE_NS_API_H #undef VOLATILE @@ -36,6 +37,17 @@ extern int winbindd_fd; +void init_request(struct winbindd_request *req,int rq_type); +NSS_STATUS winbindd_send_request(int req_type, + struct winbindd_request *request); +NSS_STATUS winbindd_get_response(struct winbindd_response *response); +NSS_STATUS winbindd_request(int req_type, + struct winbindd_request *request, + struct winbindd_response *response); +int winbind_open_pipe_sock(void); +int write_sock(void *buffer, int count); +int read_reply(struct winbindd_response *response); +void free_response(struct winbindd_response *response); #ifdef HAVE_NS_API_H /* IRIX version */ @@ -226,7 +238,6 @@ winbind_callback(nsd_file_t **rqp, int fd) free_response(&response); return(do_list(1,rq)); case WINBINDD_GETGRENT: - case WINBINDD_GETGRLST: nsd_logprintf(NSD_LOG_MIN, "callback (winbind) - %d GETGRENT responses\n", response.data.num_entries); @@ -666,7 +677,7 @@ static NSS_STATUS fill_pwent(struct passwd *result, the static data passed to us by libc to put strings and stuff in. Return NSS_STATUS_TRYAGAIN if we run out of memory. */ -static NSS_STATUS fill_grent(struct group *result, struct winbindd_gr *gr, +static int fill_grent(struct group *result, struct winbindd_gr *gr, char *gr_mem, char **buffer, size_t *buflen) { fstring name; @@ -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; @@ -1042,15 +1053,13 @@ _nss_winbind_endgrent(void) /* Get next entry from ntdom group database */ -static NSS_STATUS -winbind_getgrent(enum winbindd_cmd cmd, - struct group *result, - char *buffer, size_t buflen, int *errnop) +NSS_STATUS +_nss_winbind_getgrent_r(struct group *result, + char *buffer, size_t buflen, int *errnop) { NSS_STATUS ret; static struct winbindd_request request; static int called_again; - #ifdef DEBUG_NSS fprintf(stderr, "[%5d]: getgrent\n", getpid()); @@ -1074,7 +1083,7 @@ winbind_getgrent(enum winbindd_cmd cmd, request.data.num_entries = MAX_GETGRENT_USERS; - ret = winbindd_request(cmd, &request, + ret = winbindd_request(WINBINDD_GETGRENT, &request, &getgrent_response); if (ret == NSS_STATUS_SUCCESS) { @@ -1107,7 +1116,7 @@ winbind_getgrent(enum winbindd_cmd cmd, 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 */ @@ -1132,21 +1141,6 @@ winbind_getgrent(enum winbindd_cmd cmd, return ret; } - -NSS_STATUS -_nss_winbind_getgrent_r(struct group *result, - char *buffer, size_t buflen, int *errnop) -{ - return winbind_getgrent(WINBINDD_GETGRENT, result, buffer, buflen, errnop); -} - -NSS_STATUS -_nss_winbind_getgrlst_r(struct group *result, - char *buffer, size_t buflen, int *errnop) -{ - return winbind_getgrent(WINBINDD_GETGRLST, result, buffer, buflen, errnop); -} - /* Return group struct from group name */ NSS_STATUS @@ -1182,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; @@ -1196,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; @@ -1245,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; @@ -1259,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; |