svn commit: samba r11998 - branches/SAMBA_3_0/source/rpcclient trunk/source/rpcclient

vlendec at samba.org vlendec at samba.org
Thu Dec 1 12:52:36 GMT 2005


Author: vlendec
Date: 2005-12-01 12:52:35 +0000 (Thu, 01 Dec 2005)
New Revision: 11998

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

Log:
Add lookupname to rpcclient query_user as a fallback, we now accept both rid
and username.

Volker

Modified:
   branches/SAMBA_3_0/source/rpcclient/cmd_samr.c
   trunk/source/rpcclient/cmd_samr.c


Changeset:
Modified: branches/SAMBA_3_0/source/rpcclient/cmd_samr.c
===================================================================
--- branches/SAMBA_3_0/source/rpcclient/cmd_samr.c	2005-12-01 12:39:33 UTC (rev 11997)
+++ branches/SAMBA_3_0/source/rpcclient/cmd_samr.c	2005-12-01 12:52:35 UTC (rev 11998)
@@ -351,7 +351,7 @@
 		return NT_STATUS_OK;
 	}
 	
-	sscanf(argv[1], "%i", &user_rid);
+	user_rid = strtoul(argv[1], NULL, 10);
 	
 	if (argc > 2)
 		sscanf(argv[2], "%i", &info_level);
@@ -380,6 +380,27 @@
 				    access_mask,
 				    user_rid, &user_pol);
 
+	if (NT_STATUS_EQUAL(result, NT_STATUS_NO_SUCH_USER) &&
+	    (user_rid == 0)) {
+
+		/* Probably this was a user name, try lookupnames */
+		uint32 num_rids;
+		uint32 *rids, *types;
+		
+		result = rpccli_samr_lookup_names(cli, mem_ctx, &domain_pol,
+						  1000, 1, &argv[1],
+						  &num_rids, &rids,
+						  &types);
+
+		if (NT_STATUS_IS_OK(result)) {
+			result = rpccli_samr_open_user(cli, mem_ctx,
+						       &domain_pol,
+						       access_mask,
+						       rids[0], &user_pol);
+		}
+	}
+
+
 	if (!NT_STATUS_IS_OK(result))
 		goto done;
 

Modified: trunk/source/rpcclient/cmd_samr.c
===================================================================
--- trunk/source/rpcclient/cmd_samr.c	2005-12-01 12:39:33 UTC (rev 11997)
+++ trunk/source/rpcclient/cmd_samr.c	2005-12-01 12:52:35 UTC (rev 11998)
@@ -351,7 +351,7 @@
 		return NT_STATUS_OK;
 	}
 	
-	sscanf(argv[1], "%i", &user_rid);
+	user_rid = strtoul(argv[1], NULL, 10);
 	
 	if (argc > 2)
 		sscanf(argv[2], "%i", &info_level);
@@ -380,6 +380,27 @@
 				    access_mask,
 				    user_rid, &user_pol);
 
+	if (NT_STATUS_EQUAL(result, NT_STATUS_NO_SUCH_USER) &&
+	    (user_rid == 0)) {
+
+		/* Probably this was a user name, try lookupnames */
+		uint32 num_rids;
+		uint32 *rids, *types;
+		
+		result = rpccli_samr_lookup_names(cli, mem_ctx, &domain_pol,
+						  1000, 1, &argv[1],
+						  &num_rids, &rids,
+						  &types);
+
+		if (NT_STATUS_IS_OK(result)) {
+			result = rpccli_samr_open_user(cli, mem_ctx,
+						       &domain_pol,
+						       access_mask,
+						       rids[0], &user_pol);
+		}
+	}
+
+
 	if (!NT_STATUS_IS_OK(result))
 		goto done;
 



More information about the samba-cvs mailing list