svn commit: samba r25509 - in branches/SAMBA_4_0/source/torture/winbind: .

obnox at samba.org obnox at samba.org
Thu Oct 4 23:20:32 GMT 2007


Author: obnox
Date: 2007-10-04 23:20:30 +0000 (Thu, 04 Oct 2007)
New Revision: 25509

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=25509

Log:
Extend the WINBIND-STRUCT-LOOKUP_NAME_SID test to also
verify failure of the lookup for an invalid SID and an
invalid name.

Michael


Modified:
   branches/SAMBA_4_0/source/torture/winbind/struct_based.c


Changeset:
Modified: branches/SAMBA_4_0/source/torture/winbind/struct_based.c
===================================================================
--- branches/SAMBA_4_0/source/torture/winbind/struct_based.c	2007-10-04 18:23:22 UTC (rev 25508)
+++ branches/SAMBA_4_0/source/torture/winbind/struct_based.c	2007-10-04 23:20:30 UTC (rev 25509)
@@ -937,8 +937,27 @@
 	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 @@
 	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;



More information about the samba-cvs mailing list