1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-24 21:34:56 +03:00

r25509: Extend the WINBIND-STRUCT-LOOKUP_NAME_SID test to also

verify failure of the lookup for an invalid SID and an
invalid name.

Michael
(This used to be commit 69043a7b1c)
This commit is contained in:
Michael Adam 2007-10-04 23:20:30 +00:00 committed by Gerald (Jerry) Carter
parent 6fb6999185
commit 2cf665b8fd

View File

@ -937,8 +937,27 @@ static bool lookup_name_sid_list(struct torture_context *torture, char **list)
return true;
}
static bool name_is_in_list(const char *name, const char **list)
{
uint32_t count;
for (count = 0; list[count]; count++) {
if (strequal(name, list[count])) {
return true;
}
}
return false;
}
static bool torture_winbind_struct_lookup_name_sid(struct torture_context *torture)
{
struct winbindd_request req;
struct winbindd_response rep;
const char *invalid_sid = "S-0-0-7";
char *domain;
const char *invalid_user = "noone";
char *invalid_name;
bool strict = torture_setting_bool(torture, "strict mode", false);
char **users;
char **groups;
uint32_t count;
@ -949,11 +968,55 @@ static bool torture_winbind_struct_lookup_name_sid(struct torture_context *tortu
ok = get_user_list(torture, &users);
torture_assert(torture, ok, "failed to retrieve list of users");
lookup_name_sid_list(torture, users);
talloc_free(users);
ok = get_group_list(torture, &groups);
torture_assert(torture, ok, "failed to retrieve list of groups");
lookup_name_sid_list(torture, groups);
ZERO_STRUCT(req);
ZERO_STRUCT(rep);
fstrcpy(req.data.sid, invalid_sid);
ok = true;
DO_STRUCT_REQ_REP_EXT(WINBINDD_LOOKUPSID, &req, &rep,
NSS_STATUS_NOTFOUND,
strict,
ok=false,
talloc_asprintf(torture,
"invalid sid %s was resolved",
invalid_sid));
ZERO_STRUCT(req);
ZERO_STRUCT(rep);
/* try to find an invalid name... */
count = 0;
get_winbind_domain(torture, &domain);
do {
count++;
invalid_name = talloc_asprintf(torture, "%s\\%s%u",
domain,
invalid_user, count);
} while(name_is_in_list(invalid_name, (const char **)users) ||
name_is_in_list(invalid_name, (const char **)groups));
fstrcpy(req.data.name.dom_name, domain);
fstrcpy(req.data.name.name,
talloc_asprintf(torture, "%s%u", invalid_user,
count));
ok = true;
DO_STRUCT_REQ_REP_EXT(WINBINDD_LOOKUPNAME, &req, &rep,
NSS_STATUS_NOTFOUND,
strict,
ok=false,
talloc_asprintf(torture,
"invalid name %s was resolved",
invalid_name));
talloc_free(users);
talloc_free(groups);
return true;