r14699: allow 'net sam addmem' to accept a SID for the member
authorGerald Carter <jerry@samba.org>
Fri, 24 Mar 2006 23:54:08 +0000 (23:54 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 16:15:44 +0000 (11:15 -0500)
source/utils/net_sam.c

index 6321fab54fb2b6dc96707b39a7d71210640534fc..fc7dfea02c56b4feb4bdaafe6b64b2eee65d77f1 100644 (file)
@@ -533,10 +533,24 @@ static int net_sam_addmem(int argc, const char **argv)
                return -1;
        }
 
+       /* check to see if the member to be added is a name or a SID */
+
        if (!lookup_name(tmp_talloc_ctx(), argv[1], LOOKUP_NAME_ISOLATED,
-                        &memberdomain, &membername, &member, &membertype)) {
-               d_fprintf(stderr, "Could not find member %s\n", argv[1]);
-               return -1;
+                        &memberdomain, &membername, &member, &membertype))
+       {
+               /* try it as a SID */
+
+               if ( !string_to_sid( &member, argv[1] ) ) {
+                       d_fprintf(stderr, "Could not find member %s\n", argv[1]);
+                       return -1;
+               }
+
+               if ( !lookup_sid(tmp_talloc_ctx(), &member, &memberdomain, 
+                       &membername, &membertype) ) 
+               {
+                       d_fprintf(stderr, "Could not resolve SID %s\n", argv[1]);
+                       return -1;
+               }
        }
 
        if ((grouptype == SID_NAME_ALIAS) || (grouptype == SID_NAME_WKN_GRP)) {
@@ -562,8 +576,8 @@ static int net_sam_addmem(int argc, const char **argv)
                return -1;
        }
 
-       d_printf("Added %s\\%s to %s\\%s\n",
-                memberdomain, membername, groupdomain, groupname);
+       d_printf("Added %s\\%s to %s\\%s\n", memberdomain, membername, 
+               groupdomain, groupname);
 
        return 0;
 }