mirror of
https://github.com/samba-team/samba.git
synced 2025-03-23 06:50:21 +03:00
nsswitch: Move source3 files to top level dir.
Don't move source4 files yet to not confuse git's rename tracking too much.
This commit is contained in:
parent
46f530e42f
commit
6821d898d7
2
.gitignore
vendored
2
.gitignore
vendored
@ -51,6 +51,8 @@ examples/VFS/skel_transparent.so
|
||||
*.po
|
||||
*.pyc
|
||||
semantic.cache
|
||||
nsswitch/libnss_winbind.so
|
||||
nsswitch/libnss_wins.so
|
||||
source3/bin/*
|
||||
source3/config.cache
|
||||
source3/config.log
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -299,7 +299,7 @@ static wbcErr process_domain_info_string(TALLOC_CTX *ctx,
|
||||
|
||||
wbc_status = wbcStringToSid(r, &info->sid);
|
||||
BAIL_ON_WBC_ERROR(wbc_status);
|
||||
|
||||
|
||||
/* Trust type */
|
||||
r = s;
|
||||
if ((s = strchr(r, '\\')) == NULL) {
|
||||
@ -332,9 +332,9 @@ static wbcErr process_domain_info_string(TALLOC_CTX *ctx,
|
||||
s++;
|
||||
|
||||
if (strcmp(r, "Yes") == 0) {
|
||||
info->trust_flags |= WBC_DOMINFO_TRUST_TRANSITIVE;
|
||||
info->trust_flags |= WBC_DOMINFO_TRUST_TRANSITIVE;
|
||||
}
|
||||
|
||||
|
||||
/* Incoming */
|
||||
r = s;
|
||||
if ((s = strchr(r, '\\')) == NULL) {
|
||||
@ -345,7 +345,7 @@ static wbcErr process_domain_info_string(TALLOC_CTX *ctx,
|
||||
s++;
|
||||
|
||||
if (strcmp(r, "Yes") == 0) {
|
||||
info->trust_flags |= WBC_DOMINFO_TRUST_INCOMING;
|
||||
info->trust_flags |= WBC_DOMINFO_TRUST_INCOMING;
|
||||
}
|
||||
|
||||
/* Outgoing */
|
||||
@ -358,7 +358,7 @@ static wbcErr process_domain_info_string(TALLOC_CTX *ctx,
|
||||
s++;
|
||||
|
||||
if (strcmp(r, "Yes") == 0) {
|
||||
info->trust_flags |= WBC_DOMINFO_TRUST_OUTGOING;
|
||||
info->trust_flags |= WBC_DOMINFO_TRUST_OUTGOING;
|
||||
}
|
||||
|
||||
/* Online/Offline status */
|
||||
@ -385,14 +385,14 @@ wbcErr wbcListTrusts(struct wbcDomainInfo **domains, size_t *num_domains)
|
||||
wbcErr wbc_status = WBC_ERR_UNKNOWN_FAILURE;
|
||||
char *p = NULL;
|
||||
char *q = NULL;
|
||||
char *extra_data = NULL;
|
||||
int count = 0;
|
||||
char *extra_data = NULL;
|
||||
int count = 0;
|
||||
struct wbcDomainInfo *d_list = NULL;
|
||||
int i = 0;
|
||||
|
||||
|
||||
*domains = NULL;
|
||||
*num_domains = 0;
|
||||
|
||||
|
||||
ZERO_STRUCT(response);
|
||||
|
||||
/* Send request */
|
||||
@ -409,20 +409,20 @@ wbcErr wbcListTrusts(struct wbcDomainInfo **domains, size_t *num_domains)
|
||||
if (strlen(p) == 0) {
|
||||
/* We should always at least get back our
|
||||
own SAM domain */
|
||||
|
||||
|
||||
wbc_status = WBC_ERR_DOMAIN_NOT_FOUND;
|
||||
BAIL_ON_WBC_ERROR(wbc_status);
|
||||
}
|
||||
|
||||
/* Count number of domains */
|
||||
|
||||
count = 0;
|
||||
count = 0;
|
||||
while (p) {
|
||||
count++;
|
||||
|
||||
if ((q = strchr(p, '\n')) != NULL)
|
||||
q++;
|
||||
p = q;
|
||||
p = q;
|
||||
}
|
||||
|
||||
d_list = talloc_array(NULL, struct wbcDomainInfo, count);
|
||||
@ -431,13 +431,13 @@ wbcErr wbcListTrusts(struct wbcDomainInfo **domains, size_t *num_domains)
|
||||
extra_data = strdup((char*)response.extra_data.data);
|
||||
BAIL_ON_PTR_ERROR(extra_data, wbc_status);
|
||||
|
||||
p = extra_data;
|
||||
p = extra_data;
|
||||
|
||||
/* Outer loop processes the list of domain information */
|
||||
|
||||
for (i=0; i<count && p; i++) {
|
||||
char *next = strchr(p, '\n');
|
||||
|
||||
|
||||
if (next) {
|
||||
*next = '\0';
|
||||
next++;
|
||||
@ -449,9 +449,9 @@ wbcErr wbcListTrusts(struct wbcDomainInfo **domains, size_t *num_domains)
|
||||
p = next;
|
||||
}
|
||||
|
||||
*domains = d_list;
|
||||
*num_domains = i;
|
||||
|
||||
*domains = d_list;
|
||||
*num_domains = i;
|
||||
|
||||
done:
|
||||
if (!WBC_ERROR_IS_OK(wbc_status)) {
|
||||
if (d_list)
|
@ -155,5 +155,3 @@ done:
|
||||
talloc_free(info);
|
||||
return wbc_status;
|
||||
}
|
||||
|
||||
|
@ -952,7 +952,7 @@ wbcErr wbcDomainInfo(const char *domain,
|
||||
*
|
||||
* @return #wbcErr
|
||||
**/
|
||||
wbcErr wbcListTrusts(struct wbcDomainInfo **domains,
|
||||
wbcErr wbcListTrusts(struct wbcDomainInfo **domains,
|
||||
size_t *num_domains);
|
||||
|
||||
/* Flags for wbcLookupDomainController */
|
@ -1,4 +1,4 @@
|
||||
/* pam_winbind header file
|
||||
/* pam_winbind header file
|
||||
(Solaris needs some macros from Linux for common PAM code)
|
||||
|
||||
Shirish Kalele 2000
|
||||
@ -32,7 +32,7 @@
|
||||
/* Solaris always uses dynamic pam modules */
|
||||
#define PAM_EXTERN extern
|
||||
#if defined(HAVE_SECURITY_PAM_APPL_H)
|
||||
#include <security/pam_appl.h>
|
||||
#include <security/pam_appl.h>
|
||||
#elif defined(HAVE_PAM_PAM_APPL_H)
|
||||
#include <pam/pam_appl.h>
|
||||
#endif
|
||||
@ -83,7 +83,7 @@ do { \
|
||||
|
||||
#define _pam_drop(X) SAFE_FREE(X)
|
||||
|
||||
#define x_strdup(s) ( (s) ? strdup(s):NULL )
|
||||
#define x_strdup(s) ( (s) ? strdup(s):NULL )
|
||||
#endif /* HAVE_SECURITY__PAM_MACROS_H */
|
||||
|
||||
#ifdef HAVE_SECURITY_PAM_EXT_H
|
||||
@ -167,4 +167,3 @@ struct pwb_context {
|
||||
#define TALLOC_FREE(ctx) do { if ((ctx) != NULL) {talloc_free(ctx); ctx=NULL;} } while(0)
|
||||
#define TALLOC_ZERO_P(ctx, type) (type *)_talloc_zero(ctx, sizeof(type), #type)
|
||||
#define TALLOC_P(ctx, type) (type *)talloc_named_const(ctx, sizeof(type), #type)
|
||||
|
@ -1,4 +1,4 @@
|
||||
/*
|
||||
/*
|
||||
Unix SMB/CIFS implementation.
|
||||
|
||||
winbind client common code
|
||||
@ -6,18 +6,18 @@
|
||||
Copyright (C) Tim Potter 2000
|
||||
Copyright (C) Andrew Tridgell 2000
|
||||
Copyright (C) Andrew Bartlett 2002
|
||||
|
||||
|
||||
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 3 of the License, or (at your option) any later version.
|
||||
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -74,11 +74,11 @@ void winbind_close_sock(void)
|
||||
/* Make sure socket handle isn't stdin, stdout or stderr */
|
||||
#define RECURSION_LIMIT 3
|
||||
|
||||
static int make_nonstd_fd_internals(int fd, int limit /* Recursion limiter */)
|
||||
static int make_nonstd_fd_internals(int fd, int limit /* Recursion limiter */)
|
||||
{
|
||||
int new_fd;
|
||||
if (fd >= 0 && fd <= 2) {
|
||||
#ifdef F_DUPFD
|
||||
#ifdef F_DUPFD
|
||||
if ((new_fd = fcntl(fd, F_DUPFD, 3)) == -1) {
|
||||
return -1;
|
||||
}
|
||||
@ -92,9 +92,9 @@ static int make_nonstd_fd_internals(int fd, int limit /* Recursion limiter */)
|
||||
#else
|
||||
if (limit <= 0)
|
||||
return -1;
|
||||
|
||||
|
||||
new_fd = dup(fd);
|
||||
if (new_fd == -1)
|
||||
if (new_fd == -1)
|
||||
return -1;
|
||||
|
||||
/* use the program stack to hold our list of FDs to close */
|
||||
@ -114,7 +114,7 @@ static int make_nonstd_fd_internals(int fd, int limit /* Recursion limiter */)
|
||||
Set close on exec also.
|
||||
****************************************************************************/
|
||||
|
||||
static int make_safe_fd(int fd)
|
||||
static int make_safe_fd(int fd)
|
||||
{
|
||||
int result, flags;
|
||||
int new_fd = make_nonstd_fd_internals(fd, RECURSION_LIMIT);
|
||||
@ -366,65 +366,65 @@ static int winbind_open_pipe_sock(int recursing, int need_priv)
|
||||
int winbind_write_sock(void *buffer, int count, int recursing, int need_priv)
|
||||
{
|
||||
int result, nwritten;
|
||||
|
||||
|
||||
/* Open connection to winbind daemon */
|
||||
|
||||
|
||||
restart:
|
||||
|
||||
|
||||
if (winbind_open_pipe_sock(recursing, need_priv) == -1) {
|
||||
errno = ENOENT;
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
/* Write data to socket */
|
||||
|
||||
|
||||
nwritten = 0;
|
||||
|
||||
|
||||
while(nwritten < count) {
|
||||
struct timeval tv;
|
||||
fd_set r_fds;
|
||||
|
||||
|
||||
/* Catch pipe close on other end by checking if a read()
|
||||
call would not block by calling select(). */
|
||||
|
||||
FD_ZERO(&r_fds);
|
||||
FD_SET(winbindd_fd, &r_fds);
|
||||
ZERO_STRUCT(tv);
|
||||
|
||||
|
||||
if (select(winbindd_fd + 1, &r_fds, NULL, NULL, &tv) == -1) {
|
||||
winbind_close_sock();
|
||||
return -1; /* Select error */
|
||||
}
|
||||
|
||||
|
||||
/* Write should be OK if fd not available for reading */
|
||||
|
||||
|
||||
if (!FD_ISSET(winbindd_fd, &r_fds)) {
|
||||
|
||||
|
||||
/* Do the write */
|
||||
|
||||
|
||||
result = write(winbindd_fd,
|
||||
(char *)buffer + nwritten,
|
||||
(char *)buffer + nwritten,
|
||||
count - nwritten);
|
||||
|
||||
|
||||
if ((result == -1) || (result == 0)) {
|
||||
|
||||
|
||||
/* Write failed */
|
||||
|
||||
|
||||
winbind_close_sock();
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
nwritten += result;
|
||||
|
||||
|
||||
} else {
|
||||
|
||||
|
||||
/* Pipe has closed on remote end */
|
||||
|
||||
|
||||
winbind_close_sock();
|
||||
goto restart;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return nwritten;
|
||||
}
|
||||
|
||||
@ -443,7 +443,7 @@ int winbind_read_sock(void *buffer, int count)
|
||||
while(nread < count) {
|
||||
struct timeval tv;
|
||||
fd_set r_fds;
|
||||
|
||||
|
||||
/* Catch pipe close on other end by checking if a read()
|
||||
call would not block by calling select(). */
|
||||
|
||||
@ -457,7 +457,7 @@ int winbind_read_sock(void *buffer, int count)
|
||||
winbind_close_sock();
|
||||
return -1; /* Select error */
|
||||
}
|
||||
|
||||
|
||||
if (selret == 0) {
|
||||
/* Not ready for read yet... */
|
||||
if (total_time >= 30) {
|
||||
@ -470,27 +470,27 @@ int winbind_read_sock(void *buffer, int count)
|
||||
}
|
||||
|
||||
if (FD_ISSET(winbindd_fd, &r_fds)) {
|
||||
|
||||
|
||||
/* Do the Read */
|
||||
|
||||
int result = read(winbindd_fd, (char *)buffer + nread,
|
||||
|
||||
int result = read(winbindd_fd, (char *)buffer + nread,
|
||||
count - nread);
|
||||
|
||||
|
||||
if ((result == -1) || (result == 0)) {
|
||||
|
||||
|
||||
/* Read failed. I think the only useful thing we
|
||||
can do here is just return -1 and fail since the
|
||||
transaction has failed half way through. */
|
||||
|
||||
|
||||
winbind_close_sock();
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
nread += result;
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return nread;
|
||||
}
|
||||
|
||||
@ -503,15 +503,15 @@ int winbindd_read_reply(struct winbindd_response *response)
|
||||
if (!response) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
/* Read fixed length response */
|
||||
|
||||
|
||||
result1 = winbind_read_sock(response,
|
||||
sizeof(struct winbindd_response));
|
||||
if (result1 == -1) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
/* We actually send the pointer value of the extra_data field from
|
||||
the server. This has no meaning in the client's address space
|
||||
so we clear it out. */
|
||||
@ -519,17 +519,17 @@ int winbindd_read_reply(struct winbindd_response *response)
|
||||
response->extra_data.data = NULL;
|
||||
|
||||
/* Read variable length response */
|
||||
|
||||
|
||||
if (response->length > sizeof(struct winbindd_response)) {
|
||||
int extra_data_len = response->length -
|
||||
int extra_data_len = response->length -
|
||||
sizeof(struct winbindd_response);
|
||||
|
||||
|
||||
/* Mallocate memory for extra data */
|
||||
|
||||
|
||||
if (!(response->extra_data.data = malloc(extra_data_len))) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
result2 = winbind_read_sock(response->extra_data.data,
|
||||
extra_data_len);
|
||||
if (result2 == -1) {
|
||||
@ -537,14 +537,14 @@ int winbindd_read_reply(struct winbindd_response *response)
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Return total amount of data read */
|
||||
|
||||
|
||||
return result1 + result2;
|
||||
}
|
||||
|
||||
/*
|
||||
* send simple types of requests
|
||||
/*
|
||||
* send simple types of requests
|
||||
*/
|
||||
|
||||
NSS_STATUS winbindd_send_request(int req_type, int need_priv,
|
||||
@ -562,33 +562,33 @@ NSS_STATUS winbindd_send_request(int req_type, int need_priv,
|
||||
ZERO_STRUCT(lrequest);
|
||||
request = &lrequest;
|
||||
}
|
||||
|
||||
|
||||
/* Fill in request and send down pipe */
|
||||
|
||||
winbindd_init_request(request, req_type);
|
||||
|
||||
|
||||
if (winbind_write_sock(request, sizeof(*request),
|
||||
request->wb_flags & WBFLAG_RECURSE,
|
||||
need_priv) == -1)
|
||||
need_priv) == -1)
|
||||
{
|
||||
/* Set ENOENT for consistency. Required by some apps */
|
||||
errno = ENOENT;
|
||||
|
||||
|
||||
return NSS_STATUS_UNAVAIL;
|
||||
}
|
||||
|
||||
if ((request->extra_len != 0) &&
|
||||
(winbind_write_sock(request->extra_data.data,
|
||||
request->extra_len,
|
||||
request->extra_len,
|
||||
request->wb_flags & WBFLAG_RECURSE,
|
||||
need_priv) == -1))
|
||||
need_priv) == -1))
|
||||
{
|
||||
/* Set ENOENT for consistency. Required by some apps */
|
||||
errno = ENOENT;
|
||||
|
||||
return NSS_STATUS_UNAVAIL;
|
||||
}
|
||||
|
||||
|
||||
return NSS_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
@ -624,13 +624,13 @@ NSS_STATUS winbindd_get_response(struct winbindd_response *response)
|
||||
if (response->result != WINBINDD_OK) {
|
||||
return NSS_STATUS_NOTFOUND;
|
||||
}
|
||||
|
||||
|
||||
return NSS_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
/* Handle simple types of requests */
|
||||
|
||||
NSS_STATUS winbindd_request_response(int req_type,
|
||||
NSS_STATUS winbindd_request_response(int req_type,
|
||||
struct winbindd_request *request,
|
||||
struct winbindd_response *response)
|
||||
{
|
||||
@ -639,7 +639,7 @@ NSS_STATUS winbindd_request_response(int req_type,
|
||||
|
||||
while ((status == NSS_STATUS_UNAVAIL) && (count < 10)) {
|
||||
status = winbindd_send_request(req_type, 0, request);
|
||||
if (status != NSS_STATUS_SUCCESS)
|
||||
if (status != NSS_STATUS_SUCCESS)
|
||||
return(status);
|
||||
status = winbindd_get_response(response);
|
||||
count += 1;
|
||||
@ -648,7 +648,7 @@ NSS_STATUS winbindd_request_response(int req_type,
|
||||
return status;
|
||||
}
|
||||
|
||||
NSS_STATUS winbindd_priv_request_response(int req_type,
|
||||
NSS_STATUS winbindd_priv_request_response(int req_type,
|
||||
struct winbindd_request *request,
|
||||
struct winbindd_response *response)
|
||||
{
|
||||
@ -657,7 +657,7 @@ NSS_STATUS winbindd_priv_request_response(int req_type,
|
||||
|
||||
while ((status == NSS_STATUS_UNAVAIL) && (count < 10)) {
|
||||
status = winbindd_send_request(req_type, 1, request);
|
||||
if (status != NSS_STATUS_SUCCESS)
|
||||
if (status != NSS_STATUS_SUCCESS)
|
||||
return(status);
|
||||
status = winbindd_get_response(response);
|
||||
count += 1;
|
@ -1,21 +1,21 @@
|
||||
/*
|
||||
/*
|
||||
Unix SMB/CIFS implementation.
|
||||
|
||||
Winbind status program.
|
||||
|
||||
Copyright (C) Tim Potter 2000-2003
|
||||
Copyright (C) Andrew Bartlett 2002
|
||||
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -378,8 +378,8 @@ static bool wbinfo_list_domains(bool list_all_domains, bool verbose)
|
||||
}
|
||||
|
||||
if (print_all) {
|
||||
d_printf("%-16s%-24s%-12s%-12s%-5s%-5s\n",
|
||||
"Domain Name", "DNS Domain", "Trust Type",
|
||||
d_printf("%-16s%-24s%-12s%-12s%-5s%-5s\n",
|
||||
"Domain Name", "DNS Domain", "Trust Type",
|
||||
"Transitive", "In", "Out");
|
||||
}
|
||||
|
||||
@ -398,10 +398,10 @@ static bool wbinfo_list_domains(bool list_all_domains, bool verbose)
|
||||
case WBC_DOMINFO_TRUSTTYPE_NONE:
|
||||
d_printf("None ");
|
||||
break;
|
||||
case WBC_DOMINFO_TRUSTTYPE_FOREST:
|
||||
case WBC_DOMINFO_TRUSTTYPE_FOREST:
|
||||
d_printf("Forest ");
|
||||
break;
|
||||
case WBC_DOMINFO_TRUSTTYPE_EXTERNAL:
|
||||
case WBC_DOMINFO_TRUSTTYPE_EXTERNAL:
|
||||
d_printf("External ");
|
||||
break;
|
||||
case WBC_DOMINFO_TRUSTTYPE_IN_FOREST:
|
||||
@ -472,8 +472,8 @@ static bool wbinfo_show_onlinestatus(const char *domain)
|
||||
}
|
||||
|
||||
is_offline = (domain_list[i].domain_flags & WBC_DOMINFO_DOMAIN_OFFLINE);
|
||||
|
||||
d_printf("%s : %s\n",
|
||||
|
||||
d_printf("%s : %s\n",
|
||||
domain_list[i].short_name,
|
||||
is_offline ? "offline" : "online" );
|
||||
}
|
||||
@ -1104,12 +1104,12 @@ static bool wbinfo_auth_krb5(char *username, const char *cctype, uint32 flags)
|
||||
|
||||
/* Display response */
|
||||
|
||||
d_printf("plaintext kerberos password authentication for [%s] %s (requesting cctype: %s)\n",
|
||||
d_printf("plaintext kerberos password authentication for [%s] %s (requesting cctype: %s)\n",
|
||||
username, (result == NSS_STATUS_SUCCESS) ? "succeeded" : "failed", cctype);
|
||||
|
||||
if (response.data.auth.nt_status)
|
||||
d_fprintf(stderr, "error code was %s (0x%x)\nerror messsage was: %s\n",
|
||||
response.data.auth.nt_status_string,
|
||||
d_fprintf(stderr, "error code was %s (0x%x)\nerror messsage was: %s\n",
|
||||
response.data.auth.nt_status_string,
|
||||
response.data.auth.nt_status,
|
||||
response.data.auth.error_string);
|
||||
|
||||
@ -1162,7 +1162,7 @@ static bool wbinfo_auth(char *username)
|
||||
|
||||
#if 0
|
||||
if (response.data.auth.nt_status)
|
||||
d_fprintf(stderr, "error code was %s (0x%x)\nerror messsage was: %s\n",
|
||||
d_fprintf(stderr, "error code was %s (0x%x)\nerror messsage was: %s\n",
|
||||
response.data.auth.nt_status_string,
|
||||
response.data.auth.nt_status,
|
||||
response.data.auth.error_string);
|
||||
@ -1260,7 +1260,7 @@ static bool wbinfo_auth_crap(char *username)
|
||||
WBC_ERROR_IS_OK(wbc_status) ? "succeeded" : "failed");
|
||||
|
||||
if (wbc_status == WBC_ERR_AUTH_ERROR) {
|
||||
d_fprintf(stderr, "error code was %s (0x%x)\nerror messsage was: %s\n",
|
||||
d_fprintf(stderr, "error code was %s (0x%x)\nerror messsage was: %s\n",
|
||||
err->nt_string,
|
||||
err->nt_status,
|
||||
err->display_string);
|
||||
@ -1312,7 +1312,7 @@ static bool wbinfo_klog(char *username)
|
||||
(result == NSS_STATUS_SUCCESS) ? "succeeded" : "failed");
|
||||
|
||||
if (response.data.auth.nt_status)
|
||||
d_fprintf(stderr, "error code was %s (0x%x)\nerror messsage was: %s\n",
|
||||
d_fprintf(stderr, "error code was %s (0x%x)\nerror messsage was: %s\n",
|
||||
response.data.auth.nt_status_string,
|
||||
response.data.auth.nt_status,
|
||||
response.data.auth.error_string);
|
||||
@ -1853,14 +1853,14 @@ int main(int argc, char **argv, char **envp)
|
||||
break;
|
||||
case 'r':
|
||||
if (!wbinfo_get_usergroups(string_arg)) {
|
||||
d_fprintf(stderr, "Could not get groups for user %s\n",
|
||||
d_fprintf(stderr, "Could not get groups for user %s\n",
|
||||
string_arg);
|
||||
goto done;
|
||||
}
|
||||
break;
|
||||
case OPT_USERSIDS:
|
||||
if (!wbinfo_get_usersids(string_arg)) {
|
||||
d_fprintf(stderr, "Could not get group SIDs for user SID %s\n",
|
||||
d_fprintf(stderr, "Could not get group SIDs for user SID %s\n",
|
||||
string_arg);
|
||||
goto done;
|
||||
}
|
@ -6,10 +6,10 @@ void winbindd_free_response(struct winbindd_response *response);
|
||||
NSS_STATUS winbindd_send_request(int req_type, int need_priv,
|
||||
struct winbindd_request *request);
|
||||
NSS_STATUS winbindd_get_response(struct winbindd_response *response);
|
||||
NSS_STATUS winbindd_request_response(int req_type,
|
||||
NSS_STATUS winbindd_request_response(int req_type,
|
||||
struct winbindd_request *request,
|
||||
struct winbindd_response *response);
|
||||
NSS_STATUS winbindd_priv_request_response(int req_type,
|
||||
NSS_STATUS winbindd_priv_request_response(int req_type,
|
||||
struct winbindd_request *request,
|
||||
struct winbindd_response *response);
|
||||
int winbindd_read_reply(struct winbindd_response *response);
|
@ -1,21 +1,21 @@
|
||||
/*
|
||||
/*
|
||||
Unix SMB/CIFS implementation.
|
||||
|
||||
A common place to work out how to define NSS_STATUS on various
|
||||
platforms.
|
||||
|
||||
Copyright (C) Tim Potter 2000
|
||||
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 3 of the License, or (at your option) any later version.
|
||||
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -25,8 +25,8 @@
|
||||
|
||||
#ifdef HAVE_NSS_COMMON_H
|
||||
|
||||
/*
|
||||
* Sun Solaris
|
||||
/*
|
||||
* Sun Solaris
|
||||
*/
|
||||
|
||||
#include "nsswitch/winbind_nss_solaris.h"
|
||||
@ -42,7 +42,7 @@
|
||||
#elif HAVE_NS_API_H
|
||||
|
||||
/*
|
||||
* SGI IRIX
|
||||
* SGI IRIX
|
||||
*/
|
||||
|
||||
#include "nsswitch/winbind_nss_irix.h"
|
@ -1,4 +1,4 @@
|
||||
/*
|
||||
/*
|
||||
Unix SMB/CIFS implementation.
|
||||
|
||||
AIX loadable authentication module, providing identification and
|
||||
@ -7,17 +7,17 @@
|
||||
Copyright (C) Tim Potter 2003
|
||||
Copyright (C) Steve Roylance 2003
|
||||
Copyright (C) Andrew Tridgell 2003-2004
|
||||
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 3 of the License, or (at your option) any later version.
|
||||
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -31,7 +31,7 @@
|
||||
changing routines, so you do not need to install the winbind PAM
|
||||
module.
|
||||
|
||||
see
|
||||
see
|
||||
http://publib16.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/kernextc/sec_load_mod.htm
|
||||
for some information in the interface that this module implements
|
||||
|
||||
@ -113,12 +113,12 @@ static void free_grp(struct group *grp)
|
||||
|
||||
free(grp->gr_name);
|
||||
free(grp->gr_passwd);
|
||||
|
||||
|
||||
if (!grp->gr_mem) {
|
||||
free(grp);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
for (i=0; grp->gr_mem[i]; i++) {
|
||||
free(grp->gr_mem[i]);
|
||||
}
|
||||
@ -200,7 +200,7 @@ static struct passwd *fill_pwent(struct winbindd_pw *pw)
|
||||
result->pw_gecos = strdup(pw->pw_gecos);
|
||||
result->pw_dir = strdup(pw->pw_dir);
|
||||
result->pw_shell = strdup(pw->pw_shell);
|
||||
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -229,12 +229,12 @@ static struct group *fill_grent(struct winbindd_gr *gr, char *gr_mem)
|
||||
if ((gr->num_gr_mem < 0) || !gr_mem) {
|
||||
gr->num_gr_mem = 0;
|
||||
}
|
||||
|
||||
|
||||
if (gr->num_gr_mem == 0) {
|
||||
/* Group is empty */
|
||||
/* Group is empty */
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
result->gr_mem = (char **)malloc(sizeof(char *) * (gr->num_gr_mem+1));
|
||||
if (!result->gr_mem) {
|
||||
errno = ENOMEM;
|
||||
@ -243,8 +243,8 @@ static struct group *fill_grent(struct winbindd_gr *gr, char *gr_mem)
|
||||
|
||||
/* Start looking at extra data */
|
||||
i=0;
|
||||
for (name = strtok_r(gr_mem, ",", &p);
|
||||
name;
|
||||
for (name = strtok_r(gr_mem, ",", &p);
|
||||
name;
|
||||
name = strtok_r(NULL, ",", &p)) {
|
||||
if (i == gr->num_gr_mem) {
|
||||
break;
|
||||
@ -261,7 +261,7 @@ static struct group *fill_grent(struct winbindd_gr *gr, char *gr_mem)
|
||||
|
||||
|
||||
|
||||
/* take a group id and return a filled struct group */
|
||||
/* take a group id and return a filled struct group */
|
||||
static struct group *wb_aix_getgrgid(gid_t gid)
|
||||
{
|
||||
struct winbindd_response response;
|
||||
@ -273,7 +273,7 @@ static struct group *wb_aix_getgrgid(gid_t gid)
|
||||
|
||||
ZERO_STRUCT(response);
|
||||
ZERO_STRUCT(request);
|
||||
|
||||
|
||||
request.data.gid = gid;
|
||||
|
||||
ret = winbindd_request_response(WINBINDD_GETGRGID, &request, &response);
|
||||
@ -309,7 +309,7 @@ static struct group *wb_aix_getgrnam(const char *name)
|
||||
STRCPY_RETNULL(request.data.groupname, name);
|
||||
|
||||
ret = winbindd_request_response(WINBINDD_GETGRNAM, &request, &response);
|
||||
|
||||
|
||||
HANDLE_ERRORS(ret);
|
||||
|
||||
grp = fill_grent(&response.data.gr, response.extra_data.data);
|
||||
@ -373,7 +373,7 @@ static char *wb_aix_getgrset(char *user)
|
||||
|
||||
num_gids = response.data.num_entries;
|
||||
gid_list = (gid_t *)response.extra_data.data;
|
||||
|
||||
|
||||
/* allocate a space large enough to contruct the string */
|
||||
tmpbuf = malloc(num_gids*12);
|
||||
if (!tmpbuf) {
|
||||
@ -381,9 +381,9 @@ static char *wb_aix_getgrset(char *user)
|
||||
}
|
||||
|
||||
for (idx=i=0; i < num_gids-1; i++) {
|
||||
idx += sprintf(tmpbuf+idx, "%u,", gid_list[i]);
|
||||
idx += sprintf(tmpbuf+idx, "%u,", gid_list[i]);
|
||||
}
|
||||
idx += sprintf(tmpbuf+idx, "%u", gid_list[i]);
|
||||
idx += sprintf(tmpbuf+idx, "%u", gid_list[i]);
|
||||
|
||||
winbindd_free_response(&response);
|
||||
|
||||
@ -391,7 +391,7 @@ static char *wb_aix_getgrset(char *user)
|
||||
}
|
||||
|
||||
|
||||
/* take a uid and return a filled struct passwd */
|
||||
/* take a uid and return a filled struct passwd */
|
||||
static struct passwd *wb_aix_getpwuid(uid_t uid)
|
||||
{
|
||||
struct winbindd_response response;
|
||||
@ -403,9 +403,9 @@ static struct passwd *wb_aix_getpwuid(uid_t uid)
|
||||
|
||||
ZERO_STRUCT(response);
|
||||
ZERO_STRUCT(request);
|
||||
|
||||
|
||||
request.data.uid = uid;
|
||||
|
||||
|
||||
ret = winbindd_request_response(WINBINDD_GETPWUID, &request, &response);
|
||||
|
||||
HANDLE_ERRORS(ret);
|
||||
@ -442,7 +442,7 @@ static struct passwd *wb_aix_getpwnam(const char *name)
|
||||
ret = winbindd_request_response(WINBINDD_GETPWNAM, &request, &response);
|
||||
|
||||
HANDLE_ERRORS(ret);
|
||||
|
||||
|
||||
pwd = fill_pwent(&response.data.pw);
|
||||
|
||||
winbindd_free_response(&response);
|
||||
@ -471,7 +471,7 @@ static int wb_aix_lsuser(char *attributes[], attrval_t results[], int size)
|
||||
|
||||
ZERO_STRUCT(request);
|
||||
ZERO_STRUCT(response);
|
||||
|
||||
|
||||
ret = winbindd_request_response(WINBINDD_LIST_USERS, &request, &response);
|
||||
if (ret != 0) {
|
||||
errno = EINVAL;
|
||||
@ -486,7 +486,7 @@ static int wb_aix_lsuser(char *attributes[], attrval_t results[], int size)
|
||||
errno = ENOMEM;
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
memcpy(s, response.extra_data.data, len+1);
|
||||
|
||||
replace_commas(s);
|
||||
@ -495,7 +495,7 @@ static int wb_aix_lsuser(char *attributes[], attrval_t results[], int size)
|
||||
results[0].attr_flag = 0;
|
||||
|
||||
winbindd_free_response(&response);
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -519,7 +519,7 @@ static int wb_aix_lsgroup(char *attributes[], attrval_t results[], int size)
|
||||
|
||||
ZERO_STRUCT(request);
|
||||
ZERO_STRUCT(response);
|
||||
|
||||
|
||||
ret = winbindd_request_response(WINBINDD_LIST_GROUPS, &request, &response);
|
||||
if (ret != 0) {
|
||||
errno = EINVAL;
|
||||
@ -534,7 +534,7 @@ static int wb_aix_lsgroup(char *attributes[], attrval_t results[], int size)
|
||||
errno = ENOMEM;
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
memcpy(s, response.extra_data.data, len+1);
|
||||
|
||||
replace_commas(s);
|
||||
@ -543,7 +543,7 @@ static int wb_aix_lsgroup(char *attributes[], attrval_t results[], int size)
|
||||
results[0].attr_flag = 0;
|
||||
|
||||
winbindd_free_response(&response);
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -552,9 +552,9 @@ static attrval_t pwd_to_group(struct passwd *pwd)
|
||||
{
|
||||
attrval_t r;
|
||||
struct group *grp = wb_aix_getgrgid(pwd->pw_gid);
|
||||
|
||||
|
||||
if (!grp) {
|
||||
r.attr_flag = EINVAL;
|
||||
r.attr_flag = EINVAL;
|
||||
} else {
|
||||
r.attr_flag = 0;
|
||||
r.attr_un.au_char = strdup(grp->gr_name);
|
||||
@ -692,18 +692,18 @@ static int wb_aix_group_attrib(const char *key, char *attributes[],
|
||||
/*
|
||||
called for user/group enumerations
|
||||
*/
|
||||
static int wb_aix_getentry(char *key, char *table, char *attributes[],
|
||||
static int wb_aix_getentry(char *key, char *table, char *attributes[],
|
||||
attrval_t results[], int size)
|
||||
{
|
||||
logit("Got getentry with key='%s' table='%s' size=%d attributes[0]='%s'\n",
|
||||
logit("Got getentry with key='%s' table='%s' size=%d attributes[0]='%s'\n",
|
||||
key, table, size, attributes[0]);
|
||||
|
||||
if (strcmp(key, "ALL") == 0 &&
|
||||
if (strcmp(key, "ALL") == 0 &&
|
||||
strcmp(table, "user") == 0) {
|
||||
return wb_aix_lsuser(attributes, results, size);
|
||||
}
|
||||
|
||||
if (strcmp(key, "ALL") == 0 &&
|
||||
if (strcmp(key, "ALL") == 0 &&
|
||||
strcmp(table, "group") == 0) {
|
||||
return wb_aix_lsgroup(attributes, results, size);
|
||||
}
|
||||
@ -732,7 +732,7 @@ static void *wb_aix_open(const char *name, const char *domain, int mode, char *o
|
||||
if (strstr(options, "debug")) {
|
||||
debug_enabled = 1;
|
||||
}
|
||||
logit("open name='%s' mode=%d domain='%s' options='%s'\n", name, domain,
|
||||
logit("open name='%s' mode=%d domain='%s' options='%s'\n", name, domain,
|
||||
mode, options);
|
||||
return NULL;
|
||||
}
|
||||
@ -744,14 +744,14 @@ static void wb_aix_close(void *token)
|
||||
}
|
||||
|
||||
#ifdef HAVE_STRUCT_SECMETHOD_TABLE_METHOD_ATTRLIST
|
||||
/*
|
||||
return a list of additional attributes supported by the backend
|
||||
/*
|
||||
return a list of additional attributes supported by the backend
|
||||
*/
|
||||
static attrlist_t **wb_aix_attrlist(void)
|
||||
{
|
||||
/* pretty confusing but we are allocating the array of pointers
|
||||
and the structures we'll be pointing to all at once. So
|
||||
you need N+1 pointers and N structures. */
|
||||
you need N+1 pointers and N structures. */
|
||||
|
||||
attrlist_t **ret = NULL;
|
||||
attrlist_t *offset = NULL;
|
||||
@ -821,7 +821,7 @@ static attrlist_t **wb_aix_attrlist(void)
|
||||
|
||||
|
||||
/*
|
||||
turn a long username into a short one. Needed to cope with the 8 char
|
||||
turn a long username into a short one. Needed to cope with the 8 char
|
||||
username limit in AIX 5.2 and below
|
||||
*/
|
||||
static int wb_aix_normalize(char *longname, char *shortname)
|
||||
@ -854,7 +854,7 @@ static int wb_aix_normalize(char *longname, char *shortname)
|
||||
/*
|
||||
authenticate a user
|
||||
*/
|
||||
static int wb_aix_authenticate(char *user, char *pass,
|
||||
static int wb_aix_authenticate(char *user, char *pass,
|
||||
int *reenter, char **message)
|
||||
{
|
||||
struct winbindd_request request;
|
||||
@ -950,7 +950,7 @@ static int wb_aix_chpass(char *user, char *oldpass, char *newpass, char **messag
|
||||
/*
|
||||
don't do any password strength testing for now
|
||||
*/
|
||||
static int wb_aix_passwdrestrictions(char *user, char *newpass, char *oldpass,
|
||||
static int wb_aix_passwdrestrictions(char *user, char *newpass, char *oldpass,
|
||||
char **message)
|
||||
{
|
||||
logit("passwdresrictions called for '%s'\n", user);
|
||||
@ -977,13 +977,13 @@ static char *wb_aix_getpasswd(char *user)
|
||||
}
|
||||
|
||||
/*
|
||||
this is called to update things like the last login time. We don't
|
||||
this is called to update things like the last login time. We don't
|
||||
currently pass this onto the DC
|
||||
*/
|
||||
static int wb_aix_putentry(char *key, char *table, char *attributes[],
|
||||
static int wb_aix_putentry(char *key, char *table, char *attributes[],
|
||||
attrval_t values[], int size)
|
||||
{
|
||||
logit("putentry key='%s' table='%s' attrib='%s'\n",
|
||||
logit("putentry key='%s' table='%s' attrib='%s'\n",
|
||||
key, table, size>=1?attributes[0]:"<null>");
|
||||
errno = ENOSYS;
|
||||
return -1;
|
||||
@ -1047,7 +1047,7 @@ int wb_aix_init(struct secmethod_table *methods)
|
||||
methods->method_passwdexpired = wb_aix_passwdexpired;
|
||||
methods->method_putentry = wb_aix_putentry;
|
||||
methods->method_getpasswd = wb_aix_getpasswd;
|
||||
methods->method_authenticate = wb_aix_authenticate;
|
||||
methods->method_authenticate = wb_aix_authenticate;
|
||||
methods->method_commit = wb_aix_commit;
|
||||
methods->method_chpass = wb_aix_chpass;
|
||||
methods->method_passwdrestrictions = wb_aix_passwdrestrictions;
|
||||
@ -1074,4 +1074,3 @@ int wb_aix_init(struct secmethod_table *methods)
|
||||
|
||||
return AUTH_SUCCESS;
|
||||
}
|
||||
|
@ -1,20 +1,20 @@
|
||||
/*
|
||||
/*
|
||||
Unix SMB/CIFS implementation.
|
||||
|
||||
Winbind daemon for ntdom nss module
|
||||
|
||||
Copyright (C) Tim Potter 2000
|
||||
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 3 of the License, or (at your option) any later version.
|
||||
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -54,6 +54,7 @@
|
||||
#ifndef FSTRING_LEN
|
||||
#define FSTRING_LEN 256
|
||||
typedef char fstring[FSTRING_LEN];
|
||||
#define fstrcpy(d,s) safe_strcpy((d),(s),sizeof(fstring)-1)
|
||||
#endif
|
||||
|
||||
/* Some systems (SCO) treat UNIX domain sockets as FIFOs */
|
@ -1,21 +1,21 @@
|
||||
/*
|
||||
/*
|
||||
Unix SMB/CIFS implementation.
|
||||
|
||||
AIX loadable authentication module, providing identification
|
||||
AIX loadable authentication module, providing identification
|
||||
routines against Samba winbind/Windows NT Domain
|
||||
|
||||
Copyright (C) Aaron Collins 2003
|
||||
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 3 of the License, or (at your option) any later version.
|
||||
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
@ -1,19 +1,19 @@
|
||||
/*
|
||||
Unix SMB/CIFS implementation.
|
||||
|
||||
|
||||
Donated by HP to enable Winbindd to build on HPUX 11.x.
|
||||
Copyright (C) Jeremy Allison 2002.
|
||||
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 3 of the License, or (at your option) any later version.
|
||||
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -34,20 +34,20 @@
|
||||
#ifdef HAVE_PTHREAD_H
|
||||
#include <pthread.h>
|
||||
#endif
|
||||
|
||||
|
||||
typedef enum {
|
||||
NSS_SUCCESS,
|
||||
NSS_NOTFOUND,
|
||||
NSS_UNAVAIL,
|
||||
NSS_TRYAGAIN
|
||||
} nss_status_t;
|
||||
|
||||
|
||||
typedef nss_status_t NSS_STATUS;
|
||||
|
||||
struct nss_backend;
|
||||
|
||||
|
||||
typedef nss_status_t (*nss_backend_op_t)(struct nss_backend *, void *args);
|
||||
|
||||
|
||||
struct nss_backend {
|
||||
nss_backend_op_t *ops;
|
||||
int n_ops;
|
||||
@ -58,41 +58,41 @@ typedef int nss_dbop_t;
|
||||
#include <errno.h>
|
||||
#include <netdb.h>
|
||||
#include <limits.h>
|
||||
|
||||
|
||||
#ifndef NSS_INCLUDE_UNSAFE
|
||||
#define NSS_INCLUDE_UNSAFE 1 /* Build old, MT-unsafe interfaces, */
|
||||
#endif /* NSS_INCLUDE_UNSAFE */
|
||||
|
||||
|
||||
enum nss_netgr_argn {
|
||||
NSS_NETGR_MACHINE,
|
||||
NSS_NETGR_USER,
|
||||
NSS_NETGR_DOMAIN,
|
||||
NSS_NETGR_N
|
||||
};
|
||||
|
||||
|
||||
enum nss_netgr_status {
|
||||
NSS_NETGR_FOUND,
|
||||
NSS_NETGR_NO,
|
||||
NSS_NETGR_NOMEM
|
||||
};
|
||||
|
||||
|
||||
typedef unsigned nss_innetgr_argc;
|
||||
typedef char **nss_innetgr_argv;
|
||||
|
||||
|
||||
struct nss_innetgr_1arg {
|
||||
nss_innetgr_argc argc;
|
||||
nss_innetgr_argv argv;
|
||||
};
|
||||
|
||||
|
||||
typedef struct {
|
||||
void *result; /* "result" parameter to getXbyY_r() */
|
||||
char *buffer; /* "buffer" " " */
|
||||
int buflen; /* "buflen" " " */
|
||||
} nss_XbyY_buf_t;
|
||||
|
||||
|
||||
extern nss_XbyY_buf_t *_nss_XbyY_buf_alloc(int struct_size, int buffer_size);
|
||||
extern void _nss_XbyY_buf_free(nss_XbyY_buf_t *);
|
||||
|
||||
|
||||
union nss_XbyY_key {
|
||||
uid_t uid;
|
||||
gid_t gid;
|
||||
@ -116,7 +116,7 @@ union nss_XbyY_key {
|
||||
} serv;
|
||||
void *ether;
|
||||
};
|
||||
|
||||
|
||||
typedef struct nss_XbyY_args {
|
||||
nss_XbyY_buf_t buf;
|
||||
int stayopen;
|
||||
@ -127,11 +127,11 @@ typedef struct nss_XbyY_args {
|
||||
*/
|
||||
int (*str2ent)(const char *instr, int instr_len, void *ent, char *buffer, int buflen);
|
||||
union nss_XbyY_key key;
|
||||
|
||||
|
||||
void *returnval;
|
||||
int erange;
|
||||
int h_errno;
|
||||
nss_status_t status;
|
||||
} nss_XbyY_args_t;
|
||||
|
||||
|
||||
#endif /* _WINBIND_NSS_HPUX_H */
|
@ -1,21 +1,21 @@
|
||||
/*
|
||||
/*
|
||||
Unix SMB/CIFS implementation.
|
||||
|
||||
Windows NT Domain nsswitch module
|
||||
|
||||
Copyright (C) Tim Potter 2000
|
||||
Copyright (C) James Peach 2006
|
||||
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 3 of the License, or (at your option) any later version.
|
||||
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -38,7 +38,7 @@ int asprintf(char **,const char *, ...) PRINTF_ATTRIBUTE(2,3);
|
||||
#endif
|
||||
|
||||
/* Maximum number of users to pass back over the unix domain socket
|
||||
per call. This is not a static limit on the total number of users
|
||||
per call. This is not a static limit on the total number of users
|
||||
or groups returned in total. */
|
||||
|
||||
#define MAX_GETPWENT_USERS 250
|
||||
@ -170,7 +170,7 @@ do_request(nsd_file_t *rq, struct winbindd_request *request)
|
||||
}
|
||||
}
|
||||
|
||||
static int
|
||||
static int
|
||||
winbind_callback(nsd_file_t **rqp, int fd)
|
||||
{
|
||||
struct winbindd_response response;
|
||||
@ -195,7 +195,7 @@ winbind_callback(nsd_file_t **rqp, int fd)
|
||||
if (status != NSS_STATUS_SUCCESS) {
|
||||
/* free any extra data area in response structure */
|
||||
winbindd_free_response(&response);
|
||||
nsd_logprintf(NSD_LOG_MIN,
|
||||
nsd_logprintf(NSD_LOG_MIN,
|
||||
"callback (winbind) returning not found, status = %d\n",
|
||||
status);
|
||||
|
||||
@ -225,9 +225,9 @@ winbind_callback(nsd_file_t **rqp, int fd)
|
||||
if (rlen == 0 || result == NULL) {
|
||||
return NSD_ERROR;
|
||||
}
|
||||
|
||||
|
||||
winbindd_free_response(&response);
|
||||
|
||||
|
||||
nsd_logprintf(NSD_LOG_MIN, " %s\n", result);
|
||||
nsd_set_result(rq, NS_SUCCESS, result, rlen, DYNAMIC);
|
||||
return NSD_OK;
|
||||
@ -236,7 +236,7 @@ winbind_callback(nsd_file_t **rqp, int fd)
|
||||
case WINBINDD_GETPWNAM:
|
||||
{
|
||||
struct winbindd_pw *pw = &response.data.pw;
|
||||
|
||||
|
||||
nsd_logprintf(NSD_LOG_MIN,
|
||||
"callback (winbind) GETPWUID | GETPWUID\n");
|
||||
|
||||
@ -250,9 +250,9 @@ winbind_callback(nsd_file_t **rqp, int fd)
|
||||
pw->pw_shell);
|
||||
if (rlen == 0 || result == NULL)
|
||||
return NSD_ERROR;
|
||||
|
||||
|
||||
winbindd_free_response(&response);
|
||||
|
||||
|
||||
nsd_logprintf(NSD_LOG_MIN, " %s\n", result);
|
||||
nsd_set_result(rq, NS_SUCCESS, result, rlen, DYNAMIC);
|
||||
return NSD_OK;
|
||||
@ -263,7 +263,7 @@ winbind_callback(nsd_file_t **rqp, int fd)
|
||||
{
|
||||
const struct winbindd_gr *gr = &response.data.gr;
|
||||
const char * members;
|
||||
|
||||
|
||||
nsd_logprintf(NSD_LOG_MIN,
|
||||
"callback (winbind) GETGRNAM | GETGRGID\n");
|
||||
|
||||
@ -272,14 +272,14 @@ winbind_callback(nsd_file_t **rqp, int fd)
|
||||
} else {
|
||||
members = "";
|
||||
}
|
||||
|
||||
|
||||
rlen = asprintf(&result, "%s:%s:%d:%s\n",
|
||||
gr->gr_name, gr->gr_passwd, gr->gr_gid, members);
|
||||
if (rlen == 0 || result == NULL)
|
||||
return NSD_ERROR;
|
||||
|
||||
|
||||
winbindd_free_response(&response);
|
||||
|
||||
|
||||
nsd_logprintf(NSD_LOG_MIN, " %s\n", result);
|
||||
nsd_set_result(rq, NS_SUCCESS, result, rlen, DYNAMIC);
|
||||
return NSD_OK;
|
||||
@ -296,46 +296,46 @@ winbind_callback(nsd_file_t **rqp, int fd)
|
||||
case WINBINDD_GETGRLST:
|
||||
{
|
||||
int entries;
|
||||
|
||||
|
||||
nsd_logprintf(NSD_LOG_MIN,
|
||||
"callback (winbind) GETGRENT | GETGRLIST %d responses\n",
|
||||
response.data.num_entries);
|
||||
|
||||
|
||||
if (response.data.num_entries) {
|
||||
const struct winbindd_gr *gr = &response.data.gr;
|
||||
const char * members;
|
||||
fstring grp_name;
|
||||
int i;
|
||||
|
||||
|
||||
gr = (struct winbindd_gr *)response.extra_data.data;
|
||||
if (! gr ) {
|
||||
nsd_logprintf(NSD_LOG_MIN, " no extra_data\n");
|
||||
winbindd_free_response(&response);
|
||||
return NSD_ERROR;
|
||||
}
|
||||
|
||||
|
||||
members = (char *)response.extra_data.data +
|
||||
(response.data.num_entries * sizeof(struct winbindd_gr));
|
||||
|
||||
|
||||
for (i = 0; i < response.data.num_entries; i++) {
|
||||
snprintf(grp_name, sizeof(grp_name) - 1, "%s:%s:%d:",
|
||||
gr->gr_name, gr->gr_passwd, gr->gr_gid);
|
||||
|
||||
|
||||
nsd_append_element(rq, NS_SUCCESS, result, rlen);
|
||||
nsd_append_result(rq, NS_SUCCESS,
|
||||
&members[gr->gr_mem_ofs],
|
||||
strlen(&members[gr->gr_mem_ofs]));
|
||||
|
||||
|
||||
/* Don't log the whole list, because it might be
|
||||
* _really_ long and we probably don't want to clobber
|
||||
* the log with it.
|
||||
*/
|
||||
nsd_logprintf(NSD_LOG_MIN, " %s (...)\n", grp_name);
|
||||
|
||||
|
||||
gr++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
entries = response.data.num_entries;
|
||||
winbindd_free_response(&response);
|
||||
if (entries < MAX_GETPWENT_USERS)
|
||||
@ -405,7 +405,7 @@ winbind_callback(nsd_file_t **rqp, int fd)
|
||||
}
|
||||
}
|
||||
|
||||
static int
|
||||
static int
|
||||
winbind_timeout(nsd_file_t **rqp, nsd_times_t *to)
|
||||
{
|
||||
nsd_file_t *rq;
|
||||
@ -455,7 +455,7 @@ send_next_request(nsd_file_t *rq, struct winbindd_request *request)
|
||||
SAFE_FREE(request);
|
||||
|
||||
if (status != NSS_STATUS_SUCCESS) {
|
||||
nsd_logprintf(NSD_LOG_MIN,
|
||||
nsd_logprintf(NSD_LOG_MIN,
|
||||
"send_next_request (winbind) error status = %d\n",
|
||||
status);
|
||||
rq->f_status = status;
|
||||
@ -512,15 +512,15 @@ int lookup(nsd_file_t *rq)
|
||||
request->data.uid = atoi(key);
|
||||
rq->f_cmd_data = (void *)WINBINDD_GETPWUID;
|
||||
} else if (strcasecmp(map,"passwd.byname") == 0) {
|
||||
strncpy(request->data.username, key,
|
||||
strncpy(request->data.username, key,
|
||||
sizeof(request->data.username) - 1);
|
||||
request->data.username[sizeof(request->data.username) - 1] = '\0';
|
||||
rq->f_cmd_data = (void *)WINBINDD_GETPWNAM;
|
||||
rq->f_cmd_data = (void *)WINBINDD_GETPWNAM;
|
||||
} else if (strcasecmp(map,"group.byname") == 0) {
|
||||
strncpy(request->data.groupname, key,
|
||||
strncpy(request->data.groupname, key,
|
||||
sizeof(request->data.groupname) - 1);
|
||||
request->data.groupname[sizeof(request->data.groupname) - 1] = '\0';
|
||||
rq->f_cmd_data = (void *)WINBINDD_GETGRNAM;
|
||||
rq->f_cmd_data = (void *)WINBINDD_GETGRNAM;
|
||||
} else if (strcasecmp(map,"group.bygid") == 0) {
|
||||
request->data.gid = atoi(key);
|
||||
rq->f_cmd_data = (void *)WINBINDD_GETGRGID;
|
@ -1,20 +1,20 @@
|
||||
/*
|
||||
/*
|
||||
Unix SMB/CIFS implementation.
|
||||
|
||||
Winbind daemon for ntdom nss module
|
||||
|
||||
Copyright (C) Tim Potter 2000
|
||||
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 3 of the License, or (at your option) any later version.
|
||||
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
@ -1,20 +1,20 @@
|
||||
/*
|
||||
/*
|
||||
Unix SMB/CIFS implementation.
|
||||
|
||||
Windows NT Domain nsswitch module
|
||||
|
||||
Copyright (C) Tim Potter 2000
|
||||
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 3 of the License, or (at your option) any later version.
|
||||
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -30,7 +30,7 @@ static pthread_mutex_t winbind_nss_mutex = PTHREAD_MUTEX_INITIALIZER;
|
||||
#endif
|
||||
|
||||
/* Maximum number of users to pass back over the unix domain socket
|
||||
per call. This is not a static limit on the total number of users
|
||||
per call. This is not a static limit on the total number of users
|
||||
or groups returned in total. */
|
||||
|
||||
#define MAX_GETPWENT_USERS 250
|
||||
@ -38,37 +38,37 @@ static pthread_mutex_t winbind_nss_mutex = PTHREAD_MUTEX_INITIALIZER;
|
||||
|
||||
NSS_STATUS _nss_winbind_setpwent(void);
|
||||
NSS_STATUS _nss_winbind_endpwent(void);
|
||||
NSS_STATUS _nss_winbind_getpwent_r(struct passwd *result, char *buffer,
|
||||
NSS_STATUS _nss_winbind_getpwent_r(struct passwd *result, char *buffer,
|
||||
size_t buflen, int *errnop);
|
||||
NSS_STATUS _nss_winbind_getpwuid_r(uid_t uid, struct passwd *result,
|
||||
NSS_STATUS _nss_winbind_getpwuid_r(uid_t uid, struct passwd *result,
|
||||
char *buffer, size_t buflen, int *errnop);
|
||||
NSS_STATUS _nss_winbind_getpwnam_r(const char *name, struct passwd *result,
|
||||
NSS_STATUS _nss_winbind_getpwnam_r(const char *name, struct passwd *result,
|
||||
char *buffer, size_t buflen, int *errnop);
|
||||
NSS_STATUS _nss_winbind_setgrent(void);
|
||||
NSS_STATUS _nss_winbind_endgrent(void);
|
||||
NSS_STATUS _nss_winbind_getgrent_r(struct group *result, char *buffer,
|
||||
NSS_STATUS _nss_winbind_getgrent_r(struct group *result, char *buffer,
|
||||
size_t buflen, int *errnop);
|
||||
NSS_STATUS _nss_winbind_getgrlst_r(struct group *result, char *buffer,
|
||||
NSS_STATUS _nss_winbind_getgrlst_r(struct group *result, char *buffer,
|
||||
size_t buflen, int *errnop);
|
||||
NSS_STATUS _nss_winbind_getgrnam_r(const char *name, struct group *result,
|
||||
NSS_STATUS _nss_winbind_getgrnam_r(const char *name, struct group *result,
|
||||
char *buffer, size_t buflen, int *errnop);
|
||||
NSS_STATUS _nss_winbind_getgrgid_r(gid_t gid, struct group *result, char *buffer,
|
||||
NSS_STATUS _nss_winbind_getgrgid_r(gid_t gid, struct group *result, char *buffer,
|
||||
size_t buflen, int *errnop);
|
||||
NSS_STATUS _nss_winbind_initgroups_dyn(char *user, gid_t group, long int *start,
|
||||
long int *size, gid_t **groups,
|
||||
NSS_STATUS _nss_winbind_initgroups_dyn(char *user, gid_t group, long int *start,
|
||||
long int *size, gid_t **groups,
|
||||
long int limit, int *errnop);
|
||||
NSS_STATUS _nss_winbind_getusersids(const char *user_sid, char **group_sids,
|
||||
int *num_groups, char *buffer, size_t buf_size,
|
||||
NSS_STATUS _nss_winbind_getusersids(const char *user_sid, char **group_sids,
|
||||
int *num_groups, char *buffer, size_t buf_size,
|
||||
int *errnop);
|
||||
NSS_STATUS _nss_winbind_nametosid(const char *name, char **sid, char *buffer,
|
||||
size_t buflen, int *errnop);
|
||||
NSS_STATUS _nss_winbind_sidtoname(const char *sid, char **name, char *buffer,
|
||||
NSS_STATUS _nss_winbind_sidtoname(const char *sid, char **name, char *buffer,
|
||||
size_t buflen, int *errnop);
|
||||
NSS_STATUS _nss_winbind_sidtouid(const char *sid, uid_t *uid, int *errnop);
|
||||
NSS_STATUS _nss_winbind_sidtogid(const char *sid, gid_t *gid, int *errnop);
|
||||
NSS_STATUS _nss_winbind_uidtosid(uid_t uid, char **sid, char *buffer,
|
||||
NSS_STATUS _nss_winbind_uidtosid(uid_t uid, char **sid, char *buffer,
|
||||
size_t buflen, int *errnop);
|
||||
NSS_STATUS _nss_winbind_gidtosid(gid_t gid, char **sid, char *buffer,
|
||||
NSS_STATUS _nss_winbind_gidtosid(gid_t gid, char **sid, char *buffer,
|
||||
size_t buflen, int *errnop);
|
||||
|
||||
/* Prototypes from wb_common.c */
|
||||
@ -180,7 +180,7 @@ static NSS_STATUS fill_pwent(struct passwd *result,
|
||||
{
|
||||
/* User name */
|
||||
|
||||
if ((result->pw_name =
|
||||
if ((result->pw_name =
|
||||
get_static(buffer, buflen, strlen(pw->pw_name) + 1)) == NULL) {
|
||||
|
||||
/* Out of memory */
|
||||
@ -192,7 +192,7 @@ static NSS_STATUS fill_pwent(struct passwd *result,
|
||||
|
||||
/* Password */
|
||||
|
||||
if ((result->pw_passwd =
|
||||
if ((result->pw_passwd =
|
||||
get_static(buffer, buflen, strlen(pw->pw_passwd) + 1)) == NULL) {
|
||||
|
||||
/* Out of memory */
|
||||
@ -201,7 +201,7 @@ static NSS_STATUS fill_pwent(struct passwd *result,
|
||||
}
|
||||
|
||||
strcpy(result->pw_passwd, pw->pw_passwd);
|
||||
|
||||
|
||||
/* [ug]id */
|
||||
|
||||
result->pw_uid = pw->pw_uid;
|
||||
@ -209,7 +209,7 @@ static NSS_STATUS fill_pwent(struct passwd *result,
|
||||
|
||||
/* GECOS */
|
||||
|
||||
if ((result->pw_gecos =
|
||||
if ((result->pw_gecos =
|
||||
get_static(buffer, buflen, strlen(pw->pw_gecos) + 1)) == NULL) {
|
||||
|
||||
/* Out of memory */
|
||||
@ -218,10 +218,10 @@ static NSS_STATUS fill_pwent(struct passwd *result,
|
||||
}
|
||||
|
||||
strcpy(result->pw_gecos, pw->pw_gecos);
|
||||
|
||||
|
||||
/* Home directory */
|
||||
|
||||
if ((result->pw_dir =
|
||||
|
||||
if ((result->pw_dir =
|
||||
get_static(buffer, buflen, strlen(pw->pw_dir) + 1)) == NULL) {
|
||||
|
||||
/* Out of memory */
|
||||
@ -232,10 +232,10 @@ static NSS_STATUS fill_pwent(struct passwd *result,
|
||||
strcpy(result->pw_dir, pw->pw_dir);
|
||||
|
||||
/* Logon shell */
|
||||
|
||||
if ((result->pw_shell =
|
||||
|
||||
if ((result->pw_shell =
|
||||
get_static(buffer, buflen, strlen(pw->pw_shell) + 1)) == NULL) {
|
||||
|
||||
|
||||
/* Out of memory */
|
||||
|
||||
return NSS_STATUS_TRYAGAIN;
|
||||
@ -423,7 +423,7 @@ _nss_winbind_endpwent(void)
|
||||
/* Fetch the next password entry from ntdom password database */
|
||||
|
||||
NSS_STATUS
|
||||
_nss_winbind_getpwent_r(struct passwd *result, char *buffer,
|
||||
_nss_winbind_getpwent_r(struct passwd *result, char *buffer,
|
||||
size_t buflen, int *errnop)
|
||||
{
|
||||
NSS_STATUS ret;
|
||||
@ -446,7 +446,7 @@ _nss_winbind_getpwent_r(struct passwd *result, char *buffer,
|
||||
}
|
||||
|
||||
/* Else call winbindd to get a bunch of entries */
|
||||
|
||||
|
||||
if (num_pw_cache > 0) {
|
||||
winbindd_free_response(&getpwent_response);
|
||||
}
|
||||
@ -456,7 +456,7 @@ _nss_winbind_getpwent_r(struct passwd *result, char *buffer,
|
||||
|
||||
request.data.num_entries = MAX_GETPWENT_USERS;
|
||||
|
||||
ret = winbindd_request_response(WINBINDD_GETPWENT, &request,
|
||||
ret = winbindd_request_response(WINBINDD_GETPWENT, &request,
|
||||
&getpwent_response);
|
||||
|
||||
if (ret == NSS_STATUS_SUCCESS) {
|
||||
@ -483,7 +483,7 @@ _nss_winbind_getpwent_r(struct passwd *result, char *buffer,
|
||||
|
||||
ret = fill_pwent(result, &pw_cache[ndx_pw_cache],
|
||||
&buffer, &buflen);
|
||||
|
||||
|
||||
/* Out of memory - try again */
|
||||
|
||||
if (ret == NSS_STATUS_TRYAGAIN) {
|
||||
@ -547,7 +547,7 @@ _nss_winbind_getpwuid_r(uid_t uid, struct passwd *result, char *buffer,
|
||||
ret = winbindd_request_response(WINBINDD_GETPWUID, &request, &response);
|
||||
|
||||
if (ret == NSS_STATUS_SUCCESS) {
|
||||
ret = fill_pwent(result, &response.data.pw,
|
||||
ret = fill_pwent(result, &response.data.pw,
|
||||
&buffer, &buflen);
|
||||
|
||||
if (ret == NSS_STATUS_TRYAGAIN) {
|
||||
@ -615,7 +615,7 @@ _nss_winbind_getpwnam_r(const char *name, struct passwd *result, char *buffer,
|
||||
ZERO_STRUCT(response);
|
||||
ZERO_STRUCT(request);
|
||||
|
||||
strncpy(request.data.username, name,
|
||||
strncpy(request.data.username, name,
|
||||
sizeof(request.data.username) - 1);
|
||||
request.data.username
|
||||
[sizeof(request.data.username) - 1] = '\0';
|
||||
@ -746,7 +746,7 @@ winbind_getgrent(enum winbindd_cmd cmd,
|
||||
NSS_STATUS ret;
|
||||
static struct winbindd_request request;
|
||||
static int called_again;
|
||||
|
||||
|
||||
|
||||
#ifdef DEBUG_NSS
|
||||
fprintf(stderr, "[%5d]: getgrent\n", getpid());
|
||||
@ -764,7 +764,7 @@ winbind_getgrent(enum winbindd_cmd cmd,
|
||||
}
|
||||
|
||||
/* Else call winbindd to get a bunch of entries */
|
||||
|
||||
|
||||
if (num_gr_cache > 0) {
|
||||
winbindd_free_response(&getgrent_response);
|
||||
}
|
||||
@ -774,7 +774,7 @@ winbind_getgrent(enum winbindd_cmd cmd,
|
||||
|
||||
request.data.num_entries = MAX_GETGRENT_USERS;
|
||||
|
||||
ret = winbindd_request_response(cmd, &request,
|
||||
ret = winbindd_request_response(cmd, &request,
|
||||
&getgrent_response);
|
||||
|
||||
if (ret == NSS_STATUS_SUCCESS) {
|
||||
@ -810,7 +810,7 @@ winbind_getgrent(enum winbindd_cmd cmd,
|
||||
ret = fill_grent(result, &gr_cache[ndx_gr_cache],
|
||||
((char *)getgrent_response.extra_data.data)+mem_ofs,
|
||||
&buffer, &buflen);
|
||||
|
||||
|
||||
/* Out of memory - try again */
|
||||
|
||||
if (ret == NSS_STATUS_TRYAGAIN) {
|
||||
@ -869,7 +869,7 @@ _nss_winbind_getgrnam_r(const char *name,
|
||||
static struct winbindd_response response;
|
||||
struct winbindd_request request;
|
||||
static int keep_response;
|
||||
|
||||
|
||||
#ifdef DEBUG_NSS
|
||||
fprintf(stderr, "[%5d]: getgrnam %s\n", getpid(), name);
|
||||
#endif
|
||||
@ -888,7 +888,7 @@ _nss_winbind_getgrnam_r(const char *name,
|
||||
ZERO_STRUCT(request);
|
||||
ZERO_STRUCT(response);
|
||||
|
||||
strncpy(request.data.groupname, name,
|
||||
strncpy(request.data.groupname, name,
|
||||
sizeof(request.data.groupname));
|
||||
request.data.groupname
|
||||
[sizeof(request.data.groupname) - 1] = '\0';
|
||||
@ -896,7 +896,7 @@ _nss_winbind_getgrnam_r(const char *name,
|
||||
ret = winbindd_request_response(WINBINDD_GETGRNAM, &request, &response);
|
||||
|
||||
if (ret == NSS_STATUS_SUCCESS) {
|
||||
ret = fill_grent(result, &response.data.gr,
|
||||
ret = fill_grent(result, &response.data.gr,
|
||||
(char *)response.extra_data.data,
|
||||
&buffer, &buflen);
|
||||
|
||||
@ -911,7 +911,7 @@ _nss_winbind_getgrnam_r(const char *name,
|
||||
|
||||
/* We've been called again */
|
||||
|
||||
ret = fill_grent(result, &response.data.gr,
|
||||
ret = fill_grent(result, &response.data.gr,
|
||||
(char *)response.extra_data.data, &buffer,
|
||||
&buflen);
|
||||
|
||||
@ -975,8 +975,8 @@ _nss_winbind_getgrgid_r(gid_t gid,
|
||||
|
||||
if (ret == NSS_STATUS_SUCCESS) {
|
||||
|
||||
ret = fill_grent(result, &response.data.gr,
|
||||
(char *)response.extra_data.data,
|
||||
ret = fill_grent(result, &response.data.gr,
|
||||
(char *)response.extra_data.data,
|
||||
&buffer, &buflen);
|
||||
|
||||
if (ret == NSS_STATUS_TRYAGAIN) {
|
||||
@ -990,7 +990,7 @@ _nss_winbind_getgrgid_r(gid_t gid,
|
||||
|
||||
/* We've been called again */
|
||||
|
||||
ret = fill_grent(result, &response.data.gr,
|
||||
ret = fill_grent(result, &response.data.gr,
|
||||
(char *)response.extra_data.data, &buffer,
|
||||
&buflen);
|
||||
|
||||
@ -1110,7 +1110,7 @@ _nss_winbind_initgroups_dyn(char *user, gid_t group, long int *start,
|
||||
*start += 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Back to your regularly scheduled programming */
|
||||
|
||||
done:
|
||||
@ -1167,7 +1167,7 @@ _nss_winbind_getusersids(const char *user_sid, char **group_sids,
|
||||
*group_sids = buffer;
|
||||
memcpy(buffer, response.extra_data.data, response.length - sizeof(response));
|
||||
errno = *errnop = 0;
|
||||
|
||||
|
||||
done:
|
||||
winbindd_free_response(&response);
|
||||
|
||||
@ -1199,7 +1199,7 @@ _nss_winbind_nametosid(const char *name, char **sid, char *buffer,
|
||||
ZERO_STRUCT(response);
|
||||
ZERO_STRUCT(request);
|
||||
|
||||
strncpy(request.data.name.name, name,
|
||||
strncpy(request.data.name.name, name,
|
||||
sizeof(request.data.name.name) - 1);
|
||||
request.data.name.name[sizeof(request.data.name.name) - 1] = '\0';
|
||||
|
||||
@ -1264,7 +1264,7 @@ _nss_winbind_sidtoname(const char *sid, char **name, char *buffer,
|
||||
}
|
||||
|
||||
|
||||
strncpy(request.data.sid, sid,
|
||||
strncpy(request.data.sid, sid,
|
||||
sizeof(request.data.sid) - 1);
|
||||
request.data.sid[sizeof(request.data.sid) - 1] = '\0';
|
||||
|
||||
@ -1274,7 +1274,7 @@ _nss_winbind_sidtoname(const char *sid, char **name, char *buffer,
|
||||
goto failed;
|
||||
}
|
||||
|
||||
needed =
|
||||
needed =
|
||||
strlen(response.data.name.dom_name) +
|
||||
strlen(response.data.name.name) + 2;
|
||||
|
||||
@ -1284,7 +1284,7 @@ _nss_winbind_sidtoname(const char *sid, char **name, char *buffer,
|
||||
goto failed;
|
||||
}
|
||||
|
||||
snprintf(buffer, needed, "%s%c%s",
|
||||
snprintf(buffer, needed, "%s%c%s",
|
||||
response.data.name.dom_name,
|
||||
sep_char,
|
||||
response.data.name.name);
|
@ -1,20 +1,20 @@
|
||||
/*
|
||||
/*
|
||||
Unix SMB/CIFS implementation.
|
||||
|
||||
Winbind daemon for ntdom nss module
|
||||
|
||||
Copyright (C) Tim Potter 2000
|
||||
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 3 of the License, or (at your option) any later version.
|
||||
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
@ -1,21 +1,21 @@
|
||||
/*
|
||||
/*
|
||||
Unix SMB/CIFS implementation.
|
||||
|
||||
NetBSD loadable authentication module, providing identification
|
||||
NetBSD loadable authentication module, providing identification
|
||||
routines against Samba winbind/Windows NT Domain
|
||||
|
||||
Copyright (C) Luke Mewburn 2004-2005
|
||||
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 3 of the License, or (at your option) any later version.
|
||||
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
@ -1,8 +1,8 @@
|
||||
/*
|
||||
Solaris NSS wrapper for winbind
|
||||
Solaris NSS wrapper for winbind
|
||||
- Shirish Kalele 2000
|
||||
|
||||
Based on Luke Howard's ldap_nss module for Solaris
|
||||
|
||||
Based on Luke Howard's ldap_nss module for Solaris
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -38,7 +38,7 @@
|
||||
#include <sys/syslog.h>
|
||||
#endif /*hpux*/
|
||||
|
||||
#if defined(HAVE_NSS_COMMON_H) || defined(HPUX)
|
||||
#if defined(HAVE_NSS_COMMON_H) || defined(HPUX)
|
||||
|
||||
#undef NSS_DEBUG
|
||||
|
||||
@ -63,9 +63,9 @@ struct nss_groupsbymem {
|
||||
gid_t *gid_array;
|
||||
int maxgids;
|
||||
int force_slow_way;
|
||||
int (*str2ent)(const char *instr, int instr_len, void *ent,
|
||||
int (*str2ent)(const char *instr, int instr_len, void *ent,
|
||||
char *buffer, int buflen);
|
||||
nss_status_t (*process_cstr)(const char *instr, int instr_len,
|
||||
nss_status_t (*process_cstr)(const char *instr, int instr_len,
|
||||
struct nss_groupsbymem *);
|
||||
int numgids;
|
||||
};
|
||||
@ -106,7 +106,7 @@ _nss_winbind_getpwent_solwrap (nss_backend_t* be, void *args)
|
||||
int* errnop = &NSS_ARGS(args)->erange;
|
||||
char logmsg[80];
|
||||
|
||||
ret = _nss_winbind_getpwent_r(result, buffer,
|
||||
ret = _nss_winbind_getpwent_r(result, buffer,
|
||||
buflen, errnop);
|
||||
|
||||
if(ret == NSS_STATUS_SUCCESS)
|
||||
@ -119,7 +119,7 @@ _nss_winbind_getpwent_solwrap (nss_backend_t* be, void *args)
|
||||
snprintf(logmsg, 79, "_nss_winbind_getpwent_solwrap: Returning error: %d.\n",ret);
|
||||
NSS_DEBUG(logmsg);
|
||||
}
|
||||
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -138,7 +138,7 @@ _nss_winbind_getpwnam_solwrap (nss_backend_t* be, void* args)
|
||||
&NSS_ARGS(args)->erange);
|
||||
if(ret == NSS_STATUS_SUCCESS)
|
||||
NSS_ARGS(args)->returnval = (void*) result;
|
||||
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -147,7 +147,7 @@ _nss_winbind_getpwuid_solwrap(nss_backend_t* be, void* args)
|
||||
{
|
||||
NSS_STATUS ret;
|
||||
struct passwd* result = (struct passwd*) NSS_ARGS(args)->buf.result;
|
||||
|
||||
|
||||
NSS_DEBUG("_nss_winbind_getpwuid_solwrap");
|
||||
ret = _nss_winbind_getpwuid_r (NSS_ARGS(args)->key.uid,
|
||||
result,
|
||||
@ -156,7 +156,7 @@ _nss_winbind_getpwuid_solwrap(nss_backend_t* be, void* args)
|
||||
&NSS_ARGS(args)->erange);
|
||||
if(ret == NSS_STATUS_SUCCESS)
|
||||
NSS_ARGS(args)->returnval = (void*) result;
|
||||
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -183,7 +183,7 @@ _nss_winbind_passwd_constr (const char* db_name,
|
||||
const char* cfg_args)
|
||||
{
|
||||
nss_backend_t *be;
|
||||
|
||||
|
||||
if(!(be = SMB_MALLOC_P(nss_backend_t)) )
|
||||
return NULL;
|
||||
|
||||
@ -221,7 +221,7 @@ _nss_winbind_getgrent_solwrap(nss_backend_t* be, void* args)
|
||||
int* errnop = &NSS_ARGS(args)->erange;
|
||||
char logmsg[80];
|
||||
|
||||
ret = _nss_winbind_getgrent_r(result, buffer,
|
||||
ret = _nss_winbind_getgrent_r(result, buffer,
|
||||
buflen, errnop);
|
||||
|
||||
if(ret == NSS_STATUS_SUCCESS)
|
||||
@ -235,7 +235,7 @@ _nss_winbind_getgrent_solwrap(nss_backend_t* be, void* args)
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
||||
|
||||
}
|
||||
|
||||
static NSS_STATUS
|
||||
@ -253,10 +253,10 @@ _nss_winbind_getgrnam_solwrap(nss_backend_t* be, void* args)
|
||||
|
||||
if(ret == NSS_STATUS_SUCCESS)
|
||||
NSS_ARGS(args)->returnval = (void*) result;
|
||||
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
static NSS_STATUS
|
||||
_nss_winbind_getgrgid_solwrap(nss_backend_t* be, void* args)
|
||||
{
|
||||
@ -310,7 +310,7 @@ _nss_winbind_group_destr (nss_backend_t* be, void* args)
|
||||
return NSS_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static nss_backend_op_t group_ops[] =
|
||||
static nss_backend_op_t group_ops[] =
|
||||
{
|
||||
_nss_winbind_group_destr,
|
||||
_nss_winbind_endgrent_solwrap,
|
||||
@ -319,7 +319,7 @@ static nss_backend_op_t group_ops[] =
|
||||
_nss_winbind_getgrnam_solwrap,
|
||||
_nss_winbind_getgrgid_solwrap,
|
||||
_nss_winbind_getgroupsbymember_solwrap
|
||||
};
|
||||
};
|
||||
|
||||
nss_backend_t*
|
||||
_nss_winbind_group_constr (const char* db_name,
|
||||
@ -333,7 +333,7 @@ _nss_winbind_group_constr (const char* db_name,
|
||||
|
||||
be->ops = group_ops;
|
||||
be->n_ops = sizeof(group_ops) / sizeof(nss_backend_op_t);
|
||||
|
||||
|
||||
NSS_DEBUG("Initialized nss_winbind group backend");
|
||||
return be;
|
||||
}
|
||||
@ -410,7 +410,7 @@ parse_response(int af, nss_XbyY_args_t* argp, struct winbindd_response *response
|
||||
argp->erange = 1;
|
||||
return NSS_STR_PARSE_ERANGE;
|
||||
}
|
||||
|
||||
|
||||
data = response->data.winsresp;
|
||||
for( i = 0; i < addrcount; i++) {
|
||||
p = strchr(data, '\t');
|
||||
@ -524,7 +524,7 @@ _nss_winbind_hosts_getbyname(nss_backend_t* be, void *args)
|
||||
|
||||
ZERO_STRUCT(response);
|
||||
ZERO_STRUCT(request);
|
||||
|
||||
|
||||
strncpy(request.data.winsreq, argp->key.name, sizeof(request.data.winsreq) - 1);
|
||||
request.data.winsreq[sizeof(request.data.winsreq) - 1] = '\0';
|
||||
|
||||
@ -560,7 +560,7 @@ _nss_winbind_hosts_getbyaddr(nss_backend_t* be, void *args)
|
||||
request.data.winsreq, sizeof request.data.winsreq);
|
||||
#else
|
||||
snprintf(request.data.winsreq, sizeof request.data.winsreq,
|
||||
"%u.%u.%u.%u",
|
||||
"%u.%u.%u.%u",
|
||||
((unsigned char *)argp->key.hostaddr.addr)[0],
|
||||
((unsigned char *)argp->key.hostaddr.addr)[1],
|
||||
((unsigned char *)argp->key.hostaddr.addr)[2],
|
@ -1,20 +1,20 @@
|
||||
/*
|
||||
/*
|
||||
Unix SMB/CIFS implementation.
|
||||
|
||||
Winbind daemon for ntdom nss module
|
||||
|
||||
Copyright (C) Tim Potter 2000
|
||||
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 3 of the License, or (at your option) any later version.
|
||||
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
@ -1,14 +1,14 @@
|
||||
/*
|
||||
/*
|
||||
Unix SMB/CIFS implementation.
|
||||
|
||||
Winbind daemon for ntdom nss module
|
||||
|
||||
Copyright (C) Tim Potter 2000
|
||||
Copyright (C) Gerald Carter 2006
|
||||
|
||||
|
||||
You are free to use this interface definition in any way you see
|
||||
fit, including without restriction, using this header in your own
|
||||
products. You do not need to give any attribution.
|
||||
products. You do not need to give any attribution.
|
||||
*/
|
||||
|
||||
#ifndef SAFE_FREE
|
||||
@ -41,8 +41,6 @@
|
||||
|
||||
/* Update this when you change the interface. */
|
||||
|
||||
/* Version 20: added WINBINDD_REMOVE_MAPPING command */
|
||||
|
||||
#define WINBIND_INTERFACE_VERSION 20
|
||||
|
||||
/* Have to deal with time_t being 4 or 8 bytes due to structure alignment.
|
||||
@ -217,7 +215,7 @@ typedef struct winbindd_gr {
|
||||
/*******************************************************************************
|
||||
* This structure MUST be the same size in the 32bit and 64bit builds
|
||||
* for compatibility between /lib64/libnss_winbind.so and /lib/libnss_winbind.so
|
||||
*
|
||||
*
|
||||
* DO NOT CHANGE THIS STRUCTURE WITHOUT TESTING THE 32BIT NSS LIB AGAINST
|
||||
* A 64BIT WINBINDD --jerry
|
||||
******************************************************************************/
|
||||
@ -327,7 +325,7 @@ struct winbindd_request {
|
||||
} dsgetdcname;
|
||||
|
||||
/* padding -- needed to fix alignment between 32bit and 64bit libs.
|
||||
The size is the sizeof the union without the padding aligned on
|
||||
The size is the sizeof the union without the padding aligned on
|
||||
an 8 byte boundary. --jerry */
|
||||
|
||||
char padding[1800];
|
||||
@ -353,27 +351,27 @@ enum winbindd_result {
|
||||
/*******************************************************************************
|
||||
* This structure MUST be the same size in the 32bit and 64bit builds
|
||||
* for compatibility between /lib64/libnss_winbind.so and /lib/libnss_winbind.so
|
||||
*
|
||||
*
|
||||
* DO NOT CHANGE THIS STRUCTURE WITHOUT TESTING THE 32BIT NSS LIB AGAINST
|
||||
* A 64BIT WINBINDD --jerry
|
||||
******************************************************************************/
|
||||
|
||||
struct winbindd_response {
|
||||
|
||||
|
||||
/* Header information */
|
||||
|
||||
uint32_t length; /* Length of response */
|
||||
enum winbindd_result result; /* Result code */
|
||||
|
||||
/* Fixed length return data */
|
||||
|
||||
|
||||
union {
|
||||
int interface_version; /* Try to ensure this is always in the same spot... */
|
||||
|
||||
|
||||
fstring winsresp; /* WINS response */
|
||||
|
||||
/* getpwnam, getpwuid */
|
||||
|
||||
|
||||
struct winbindd_pw pw;
|
||||
|
||||
/* getgrnam, getgrgid */
|
||||
@ -387,7 +385,7 @@ struct winbindd_response {
|
||||
} sid;
|
||||
struct winbindd_name {
|
||||
fstring dom_name; /* lookupsid */
|
||||
fstring name;
|
||||
fstring name;
|
||||
int type;
|
||||
} name;
|
||||
uid_t uid; /* sid_to_uid */
|
@ -1,21 +1,21 @@
|
||||
/*
|
||||
/*
|
||||
Unix SMB/CIFS implementation.
|
||||
a WINS nsswitch module
|
||||
a WINS nsswitch module
|
||||
Copyright (C) Andrew Tridgell 1999
|
||||
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
*/
|
||||
|
||||
#include "includes.h"
|
||||
@ -207,7 +207,7 @@ int lookup(nsd_file_t *rq)
|
||||
bool found = False;
|
||||
|
||||
nsd_logprintf(NSD_LOG_MIN, "entering lookup (wins)\n");
|
||||
if (! rq)
|
||||
if (! rq)
|
||||
return NSD_ERROR;
|
||||
|
||||
map = nsd_attr_fetch_string(rq->f_attrs, "table", (char*)0);
|
||||
@ -225,7 +225,7 @@ int lookup(nsd_file_t *rq)
|
||||
response[0] = '\0';
|
||||
len = sizeof(response) - 2;
|
||||
|
||||
/*
|
||||
/*
|
||||
* response needs to be a string of the following format
|
||||
* ip_address[ ip_address]*\tname[ alias]*
|
||||
*/
|
||||
@ -276,7 +276,7 @@ int lookup(nsd_file_t *rq)
|
||||
if (size > len) {
|
||||
free(ip_list);
|
||||
return NSD_ERROR;
|
||||
}
|
||||
}
|
||||
strncat(response,key,size);
|
||||
strncat(response,"\n",1);
|
||||
found = True;
|
||||
@ -306,7 +306,7 @@ static char *get_static(char **buffer, size_t *buflen, int len)
|
||||
|
||||
/* Error check. We return false if things aren't set up right, or
|
||||
there isn't enough buffer space left. */
|
||||
|
||||
|
||||
if ((buffer == NULL) || (buflen == NULL) || (*buflen < len)) {
|
||||
return NULL;
|
||||
}
|
||||
@ -333,7 +333,7 @@ _nss_wins_gethostbyname_r(const char *hostname, struct hostent *he,
|
||||
int i, count;
|
||||
fstring name;
|
||||
size_t namelen;
|
||||
|
||||
|
||||
#if HAVE_PTHREAD
|
||||
pthread_mutex_lock(&wins_nss_mutex);
|
||||
#endif
|
@ -244,7 +244,7 @@ SMBLDAP_OBJ = @SMBLDAP@ @SMBLDAPUTIL@
|
||||
|
||||
VERSION_OBJ = lib/version.o
|
||||
|
||||
WBCOMMON_OBJ = nsswitch/wb_common.o
|
||||
WBCOMMON_OBJ = ../nsswitch/wb_common.o
|
||||
|
||||
AFS_OBJ = lib/afs.o
|
||||
|
||||
@ -809,7 +809,7 @@ RPCCLIENT_OBJ = $(RPCCLIENT_OBJ1) \
|
||||
$(LIBADS_OBJ) $(POPT_LIB_OBJ) \
|
||||
$(SMBLDAP_OBJ) $(DCUTIL_OBJ) $(LDB_OBJ)
|
||||
|
||||
PAM_WINBIND_OBJ = nsswitch/pam_winbind.o localedir.o $(WBCOMMON_OBJ) \
|
||||
PAM_WINBIND_OBJ = ../nsswitch/pam_winbind.o localedir.o $(WBCOMMON_OBJ) \
|
||||
$(LIBREPLACE_OBJ) @BUILD_INIPARSER@
|
||||
|
||||
LIBSMBCLIENT_OBJ0 = \
|
||||
@ -1009,7 +1009,7 @@ SMBFILTER_OBJ = utils/smbfilter.o $(PARAM_OBJ) $(LIBSMB_OBJ) \
|
||||
$(LIB_NONSMBD_OBJ) $(KRBCLIENT_OBJ) \
|
||||
$(LIBNDR_GEN_OBJ0)
|
||||
|
||||
WINBIND_WINS_NSS_OBJ = nsswitch/wins.o $(PARAM_OBJ) \
|
||||
WINBIND_WINS_NSS_OBJ = ../nsswitch/wins.o $(PARAM_OBJ) \
|
||||
$(LIBSMB_OBJ) $(LIB_NONSMBD_OBJ) $(NSSWINS_OBJ) $(KRBCLIENT_OBJ) \
|
||||
$(LIBNDR_GEN_OBJ0)
|
||||
|
||||
@ -1073,7 +1073,7 @@ WINBINDD_OBJ = \
|
||||
$(AFS_OBJ) $(AFS_SETTOKEN_OBJ) \
|
||||
$(LIBADS_SERVER_OBJ) $(SERVER_MUTEX_OBJ) $(LDB_OBJ)
|
||||
|
||||
WBINFO_OBJ = nsswitch/wbinfo.o $(LIBSAMBA_OBJ) $(PARAM_OBJ) $(LIB_NONSMBD_OBJ) \
|
||||
WBINFO_OBJ = ../nsswitch/wbinfo.o $(LIBSAMBA_OBJ) $(PARAM_OBJ) $(LIB_NONSMBD_OBJ) \
|
||||
$(POPT_LIB_OBJ) $(AFS_SETTOKEN_OBJ) \
|
||||
lib/winbind_util.o $(WBCOMMON_OBJ) @LIBWBCLIENT_STATIC@
|
||||
|
||||
@ -1110,7 +1110,7 @@ LDBADD_OBJ = $(LDB_CMDLINE_OBJ) lib/ldb/tools/ldbadd.o
|
||||
LDBDEL_OBJ = $(LDB_CMDLINE_OBJ) lib/ldb/tools/ldbdel.o
|
||||
LDBMODIFY_OBJ = $(LDB_CMDLINE_OBJ) lib/ldb/tools/ldbmodify.o
|
||||
|
||||
WINBIND_KRB5_LOCATOR_OBJ1 = nsswitch/winbind_krb5_locator.o
|
||||
WINBIND_KRB5_LOCATOR_OBJ1 = ../nsswitch/winbind_krb5_locator.o
|
||||
WINBIND_KRB5_LOCATOR_OBJ = $(WINBIND_KRB5_LOCATOR_OBJ1) $(LIBREPLACE_OBJ)
|
||||
|
||||
POPT_OBJ=../lib/popt/findme.o ../lib/popt/popt.o ../lib/popt/poptconfig.o \
|
||||
@ -1767,13 +1767,13 @@ shlibs test_shlibs: @LIBTDB_SHARED@
|
||||
#
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
LIBWBCLIENT_OBJ0 = nsswitch/libwbclient/wbclient.o \
|
||||
nsswitch/libwbclient/wbc_util.o \
|
||||
nsswitch/libwbclient/wbc_pwd.o \
|
||||
nsswitch/libwbclient/wbc_idmap.o \
|
||||
nsswitch/libwbclient/wbc_sid.o \
|
||||
nsswitch/libwbclient/wbc_guid.o \
|
||||
nsswitch/libwbclient/wbc_pam.o
|
||||
LIBWBCLIENT_OBJ0 = ../nsswitch/libwbclient/wbclient.o \
|
||||
../nsswitch/libwbclient/wbc_util.o \
|
||||
../nsswitch/libwbclient/wbc_pwd.o \
|
||||
../nsswitch/libwbclient/wbc_idmap.o \
|
||||
../nsswitch/libwbclient/wbc_sid.o \
|
||||
../nsswitch/libwbclient/wbc_guid.o \
|
||||
../nsswitch/libwbclient/wbc_pam.o
|
||||
LIBWBCLIENT_OBJ = $(LIBWBCLIENT_OBJ0) \
|
||||
$(WBCOMMON_OBJ) \
|
||||
@LIBTALLOC_STATIC@ $(LIBREPLACE_OBJ)
|
||||
@ -1784,7 +1784,7 @@ LIBWBCLIENT_SHARED_TARGET_SONAME=$(LIBWBCLIENT_SHARED_TARGET).$(LIBWBCLIENT_SOVE
|
||||
LIBWBCLIENT_STATIC_TARGET=@LIBWBCLIENT_STATIC_TARGET@
|
||||
LIBWBCLIENT=@LIBWBCLIENT_STATIC@ @LIBWBCLIENT_SHARED@
|
||||
LIBWBCLIENT_SYMS=$(srcdir)/exports/libwbclient.@SYMSEXT@
|
||||
LIBWBCLIENT_HEADERS=$(srcdir)/nsswitch/libwbclient/wbclient.h
|
||||
LIBWBCLIENT_HEADERS=$(srcdir)/../nsswitch/libwbclient/wbclient.h
|
||||
|
||||
$(LIBWBCLIENT_SYMS): $(LIBWBCLIENT_HEADERS)
|
||||
@$(MKSYMS_SH) $(AWK) $@ $(LIBWBCLIENT_HEADERS)
|
||||
@ -2776,7 +2776,7 @@ etags::
|
||||
etags --append `find $(srcdir)/../source4/ldap_server -name "*.[ch]"`
|
||||
etags --append `find $(srcdir)/../source4/smb_server -name "*.[ch]"`
|
||||
etags --append `find $(srcdir)/../source4/include -name "*.[ch]"`
|
||||
etags --append `find $(srcdir)/../source4/nsswitch -name "*.[ch]"`
|
||||
etags --append `find $(srcdir)/../nsswitch -name "*.[ch]"`
|
||||
etags --append `find $(srcdir)/../source4/cldap_server -name "*.[ch]"`
|
||||
etags --append `find $(srcdir)/../source4/utils -name "*.[ch]"`
|
||||
etags --append `find $(srcdir)/../source4/librpc -name "*.[ch]"`
|
||||
|
@ -5699,8 +5699,8 @@ HAVE_WINBIND=yes
|
||||
# Define the winbind shared library name and any specific linker flags
|
||||
# it needs to be built with.
|
||||
|
||||
WINBIND_NSS="nsswitch/libnss_winbind.$SHLIBEXT"
|
||||
WINBIND_WINS_NSS="nsswitch/libnss_wins.$SHLIBEXT"
|
||||
WINBIND_NSS="../nsswitch/libnss_winbind.$SHLIBEXT"
|
||||
WINBIND_WINS_NSS="../nsswitch/libnss_wins.$SHLIBEXT"
|
||||
WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
|
||||
NSSSONAMEVERSIONSUFFIX=""
|
||||
WINBIND_NSS_PTHREAD=""
|
||||
@ -5708,16 +5708,16 @@ WINBIND_NSS_PTHREAD=""
|
||||
case "$host_os" in
|
||||
*linux*)
|
||||
NSSSONAMEVERSIONSUFFIX=".2"
|
||||
WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
|
||||
WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_linux.o"
|
||||
;;
|
||||
*freebsd[[5-9]]*)
|
||||
# FreeBSD winbind client is implemented as a wrapper around
|
||||
# the Linux version.
|
||||
NSSSONAMEVERSIONSUFFIX=".1"
|
||||
WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_freebsd.o \
|
||||
nsswitch/winbind_nss_linux.o"
|
||||
WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
|
||||
WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
|
||||
WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_freebsd.o \
|
||||
../nsswitch/winbind_nss_linux.o"
|
||||
WINBIND_NSS="../nsswitch/nss_winbind.$SHLIBEXT"
|
||||
WINBIND_WINS_NSS="../nsswitch/nss_wins.$SHLIBEXT"
|
||||
;;
|
||||
|
||||
*netbsd*[[3-9]]*)
|
||||
@ -5727,10 +5727,10 @@ case "$host_os" in
|
||||
#
|
||||
if test x"$ac_cv_func_getpwent_r" = x"yes"; then
|
||||
WINBIND_NSS_EXTRA_OBJS="\
|
||||
nsswitch/winbind_nss_netbsd.o \
|
||||
nsswitch/winbind_nss_linux.o"
|
||||
WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
|
||||
WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
|
||||
../nsswitch/winbind_nss_netbsd.o \
|
||||
../nsswitch/winbind_nss_linux.o"
|
||||
WINBIND_NSS="../nsswitch/nss_winbind.$SHLIBEXT"
|
||||
WINBIND_WINS_NSS="../nsswitch/nss_wins.$SHLIBEXT"
|
||||
else
|
||||
HAVE_WINBIND=no
|
||||
winbind_no_reason=", getpwent_r is missing on $host_os so winbind is unsupported"
|
||||
@ -5738,28 +5738,28 @@ case "$host_os" in
|
||||
;;
|
||||
*irix*)
|
||||
# IRIX has differently named shared libraries
|
||||
WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_irix.o"
|
||||
WINBIND_NSS="nsswitch/libns_winbind.$SHLIBEXT"
|
||||
WINBIND_WINS_NSS="nsswitch/libns_wins.$SHLIBEXT"
|
||||
WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_irix.o"
|
||||
WINBIND_NSS="../nsswitch/libns_winbind.$SHLIBEXT"
|
||||
WINBIND_WINS_NSS="../nsswitch/libns_wins.$SHLIBEXT"
|
||||
;;
|
||||
*solaris*)
|
||||
# Solaris winbind client is implemented as a wrapper around
|
||||
# the Linux version.
|
||||
NSSSONAMEVERSIONSUFFIX=".1"
|
||||
WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o \
|
||||
nsswitch/winbind_nss_linux.o"
|
||||
WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_solaris.o \
|
||||
../nsswitch/winbind_nss_linux.o"
|
||||
WINBIND_NSS_EXTRA_LIBS="${LIBREPLACE_NETWORK_LIBS}"
|
||||
PAM_WINBIND_EXTRA_LIBS="${LIBREPLACE_NETWORK_LIBS}"
|
||||
;;
|
||||
*hpux11*)
|
||||
WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
|
||||
WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_solaris.o"
|
||||
;;
|
||||
*aix*)
|
||||
# AIX has even differently named shared libraries. No
|
||||
# WINS support has been implemented yet.
|
||||
WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_aix.o"
|
||||
WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_aix.o"
|
||||
WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
|
||||
WINBIND_NSS="nsswitch/WINBIND"
|
||||
WINBIND_NSS="../nsswitch/WINBIND"
|
||||
WINBIND_WINS_NSS=""
|
||||
;;
|
||||
*)
|
||||
|
@ -184,7 +184,6 @@ NTSTATUS wbsrv_samba3_handle_call(struct wbsrv_samba3_call *s3call)
|
||||
case WINBINDD_ALLOCATE_GID:
|
||||
case WINBINDD_SET_MAPPING:
|
||||
case WINBINDD_SET_HWM:
|
||||
case WINBINDD_DUMP_MAPS:
|
||||
case WINBINDD_DOMAIN_INFO:
|
||||
case WINBINDD_SHOW_SEQUENCE:
|
||||
case WINBINDD_WINS_BYIP:
|
||||
@ -194,11 +193,6 @@ NTSTATUS wbsrv_samba3_handle_call(struct wbsrv_samba3_call *s3call)
|
||||
case WINBINDD_DUAL_SIDS2XIDS:
|
||||
case WINBINDD_DUAL_SET_MAPPING:
|
||||
case WINBINDD_DUAL_SET_HWM:
|
||||
case WINBINDD_DUAL_DUMP_MAPS:
|
||||
case WINBINDD_DUAL_UID2NAME:
|
||||
case WINBINDD_DUAL_NAME2UID:
|
||||
case WINBINDD_DUAL_GID2NAME:
|
||||
case WINBINDD_DUAL_NAME2GID:
|
||||
case WINBINDD_DUAL_USERINFO:
|
||||
case WINBINDD_DUAL_GETSIDALIASES:
|
||||
case WINBINDD_CCACHE_NTLMAUTH:
|
||||
|
Loading…
x
Reference in New Issue
Block a user