svn commit: samba r4279 - in branches/SAMBA_4_0/source: librpc/idl torture/rpc

tridge at samba.org tridge at samba.org
Sun Dec 19 07:20:56 GMT 2004


Author: tridge
Date: 2004-12-19 07:20:55 +0000 (Sun, 19 Dec 2004)
New Revision: 4279

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

Log:
added IDL and test code for lsa_AddPrivilegesToAccount() and lsa_RemovePrivilegesFromAccount()






Modified:
   branches/SAMBA_4_0/source/librpc/idl/lsa.idl
   branches/SAMBA_4_0/source/torture/rpc/lsa.c


Changeset:
Modified: branches/SAMBA_4_0/source/librpc/idl/lsa.idl
===================================================================
--- branches/SAMBA_4_0/source/librpc/idl/lsa.idl	2004-12-19 06:41:27 UTC (rev 4278)
+++ branches/SAMBA_4_0/source/librpc/idl/lsa.idl	2004-12-19 07:20:55 UTC (rev 4279)
@@ -368,7 +368,7 @@
 	} lsa_LUIDAttribute;
 	
 	typedef struct {
-		uint32 count;
+		[range(0,1000)] uint32 count;
 		uint32 unknown;
 		[size_is(count)] lsa_LUIDAttribute set[*];
 	} lsa_PrivilegeSet;
@@ -379,11 +379,21 @@
 		);
 
 
+	/****************************************/
 	/* Function:            0x13 */
-	NTSTATUS lsa_AddPrivilegesToAccount();
+	NTSTATUS lsa_AddPrivilegesToAccount(
+		[in,ref]     policy_handle *handle,
+		[in,ref]     lsa_PrivilegeSet *privs
+		);
 	
+
+	/****************************************/
 	/* Function:         0x14 */
-	NTSTATUS lsa_RemovePrivilegesFromAccount();
+	NTSTATUS lsa_RemovePrivilegesFromAccount(
+		[in,ref]     policy_handle *handle,
+		[in]         uint8 remove_all,
+		[in]         lsa_PrivilegeSet *privs
+		);
 
 	/* Function:           0x15 */
 	NTSTATUS lsa_GetQuotasForAccount();

Modified: branches/SAMBA_4_0/source/torture/rpc/lsa.c
===================================================================
--- branches/SAMBA_4_0/source/torture/rpc/lsa.c	2004-12-19 06:41:27 UTC (rev 4278)
+++ branches/SAMBA_4_0/source/torture/rpc/lsa.c	2004-12-19 07:20:55 UTC (rev 4279)
@@ -357,6 +357,67 @@
 	return True;
 }
 
+static BOOL test_RemovePrivilegesFromAccount(struct dcerpc_pipe *p, 
+					     TALLOC_CTX *mem_ctx, 				  
+					     struct policy_handle *acct_handle,
+					     struct lsa_LUID *luid)
+{
+	NTSTATUS status;
+	struct lsa_RemovePrivilegesFromAccount r;
+	struct lsa_PrivilegeSet privs;
+	BOOL ret = True;
+
+	printf("Testing RemovePrivilegesFromAccount\n");
+
+	r.in.handle = acct_handle;
+	r.in.remove_all = 0;
+	r.in.privs = &privs;
+
+	privs.count = 1;
+	privs.unknown = 0;
+	privs.set = talloc_array_p(mem_ctx, struct lsa_LUIDAttribute, 1);
+	privs.set[0].luid = *luid;
+	privs.set[0].attribute = 0;
+
+	status = dcerpc_lsa_RemovePrivilegesFromAccount(p, mem_ctx, &r);
+	if (!NT_STATUS_IS_OK(status)) {
+		printf("RemovePrivilegesFromAccount failed - %s\n", nt_errstr(status));
+		return False;
+	}
+
+	return ret;
+}
+
+static BOOL test_AddPrivilegesToAccount(struct dcerpc_pipe *p, 
+					TALLOC_CTX *mem_ctx, 				  
+					struct policy_handle *acct_handle,
+					struct lsa_LUID *luid)
+{
+	NTSTATUS status;
+	struct lsa_AddPrivilegesToAccount r;
+	struct lsa_PrivilegeSet privs;
+	BOOL ret = True;
+
+	printf("Testing AddPrivilegesToAccount\n");
+
+	r.in.handle = acct_handle;
+	r.in.privs = &privs;
+
+	privs.count = 1;
+	privs.unknown = 0;
+	privs.set = talloc_array_p(mem_ctx, struct lsa_LUIDAttribute, 1);
+	privs.set[0].luid = *luid;
+	privs.set[0].attribute = 0;
+
+	status = dcerpc_lsa_AddPrivilegesToAccount(p, mem_ctx, &r);
+	if (!NT_STATUS_IS_OK(status)) {
+		printf("AddPrivilegesToAccount failed - %s\n", nt_errstr(status));
+		return False;
+	}
+
+	return ret;
+}
+
 static BOOL test_EnumPrivsAccount(struct dcerpc_pipe *p, 
 				  TALLOC_CTX *mem_ctx, 				  
 				  struct policy_handle *handle,
@@ -364,6 +425,7 @@
 {
 	NTSTATUS status;
 	struct lsa_EnumPrivsAccount r;
+	BOOL ret = True;
 
 	printf("Testing EnumPrivsAccount\n");
 
@@ -375,15 +437,20 @@
 		return False;
 	}
 
-	if (r.out.privs) {
+	if (r.out.privs && r.out.privs->count > 0) {
 		int i;
 		for (i=0;i<r.out.privs->count;i++) {
 			test_LookupPrivName(p, mem_ctx, handle, 
 					    &r.out.privs->set[i].luid);
 		}
+
+		ret &= test_RemovePrivilegesFromAccount(p, mem_ctx, acct_handle, 
+							&r.out.privs->set[0].luid);
+		ret &= test_AddPrivilegesToAccount(p, mem_ctx, acct_handle, 
+						   &r.out.privs->set[0].luid);
 	}
 
-	return True;
+	return ret;
 }
 
 static BOOL test_Delete(struct dcerpc_pipe *p, 
@@ -636,7 +703,7 @@
 	NTSTATUS status;
 	struct lsa_QuerySecurity r;
 
-	printf("Testing QuerySecuriy\n");
+	printf("Testing QuerySecurity\n");
 
 	r.in.handle = acct_handle;
 	r.in.sec_info = 7;



More information about the samba-cvs mailing list