1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-12 09:18:10 +03:00

r7877: Attempt to fix a smb_panic reported by Pavel Rochnyack.

Volker
This commit is contained in:
Volker Lendecke 2005-06-24 14:25:18 +00:00 committed by Gerald (Jerry) Carter
parent 6f4d4acc86
commit 7d1b890fea
2 changed files with 29 additions and 15 deletions

View File

@ -375,7 +375,7 @@ void winbindd_getgrgid(struct winbindd_cli_state *state)
/* "Rewind" file pointer for group database enumeration */
void winbindd_setgrent(struct winbindd_cli_state *state)
static BOOL winbindd_setgrent_internal(struct winbindd_cli_state *state)
{
struct winbindd_domain *domain;
@ -384,8 +384,7 @@ void winbindd_setgrent(struct winbindd_cli_state *state)
/* Check user has enabled this */
if (!lp_winbind_enum_groups()) {
request_error(state);
return;
return False;
}
/* Free old static data if it exists */
@ -413,8 +412,7 @@ void winbindd_setgrent(struct winbindd_cli_state *state)
if ((domain_state = SMB_MALLOC_P(struct getent_state)) == NULL) {
DEBUG(1, ("winbindd_setgrent: malloc failed for domain_state!\n"));
request_error(state);
return;
return False;
}
ZERO_STRUCTP(domain_state);
@ -427,7 +425,16 @@ void winbindd_setgrent(struct winbindd_cli_state *state)
}
state->getgrent_initialized = True;
request_ok(state);
return True;
}
void winbindd_setgrent(struct winbindd_cli_state *state)
{
if (winbindd_setgrent_internal(state)) {
request_ok(state);
} else {
request_error(state);
}
}
/* Close file pointer to ntdom group database */
@ -592,7 +599,7 @@ void winbindd_getgrent(struct winbindd_cli_state *state)
group_list = (struct winbindd_gr *)state->response.extra_data;
if (!state->getgrent_initialized)
winbindd_setgrent(state);
winbindd_setgrent_internal(state);
if (!(ent = state->getgrent_state)) {
request_error(state);

View File

@ -401,7 +401,7 @@ void winbindd_getpwuid(struct winbindd_cli_state *state)
/* Rewind file pointer for ntdom passwd database */
void winbindd_setpwent(struct winbindd_cli_state *state)
static BOOL winbindd_setpwent_internal(struct winbindd_cli_state *state)
{
struct winbindd_domain *domain;
@ -410,8 +410,7 @@ void winbindd_setpwent(struct winbindd_cli_state *state)
/* Check user has enabled this */
if (!lp_winbind_enum_users()) {
request_error(state);
return;
return False;
}
/* Free old static data if it exists */
@ -425,7 +424,7 @@ void winbindd_setpwent(struct winbindd_cli_state *state)
/* add any local users we have */
if ( (domain_state = (struct getent_state *)malloc(sizeof(struct getent_state))) == NULL )
return WINBINDD_ERROR;
return False;
ZERO_STRUCTP(domain_state);
@ -453,8 +452,7 @@ void winbindd_setpwent(struct winbindd_cli_state *state)
if ((domain_state = SMB_MALLOC_P(struct getent_state)) == NULL) {
DEBUG(0, ("malloc failed\n"));
request_error(state);
return;
return False;
}
ZERO_STRUCTP(domain_state);
@ -467,7 +465,16 @@ void winbindd_setpwent(struct winbindd_cli_state *state)
}
state->getpwent_initialized = True;
request_ok(state);
return True;
}
void winbindd_setpwent(struct winbindd_cli_state *state)
{
if (winbindd_setpwent_internal(state)) {
request_ok(state);
} else {
request_error(state);
}
}
/* Close file pointer to ntdom passwd database */
@ -603,7 +610,7 @@ void winbindd_getpwent(struct winbindd_cli_state *state)
user_list = (struct winbindd_pw *)state->response.extra_data;
if (!state->getpwent_initialized)
winbindd_setpwent(state);
winbindd_setpwent_internal(state);
if (!(ent = state->getpwent_state)) {
request_error(state);