summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
authorGerald Carter <jerry@samba.org>2006-03-24 23:54:08 +0000
committerGerald Carter <jerry@samba.org>2006-03-24 23:54:08 +0000
commitd373ac2568932955aae2314059c7a14cab6a60dd (patch)
treef6b80f1fd3bf6bdeb360d87d923f561d2df0e5da /source
parente7e0fc5c0044c36813dc0ce8fe5cf711772c9bd4 (diff)
downloadsamba-d373ac2568932955aae2314059c7a14cab6a60dd.tar.gz
samba-d373ac2568932955aae2314059c7a14cab6a60dd.tar.xz
samba-d373ac2568932955aae2314059c7a14cab6a60dd.zip
r14699: allow 'net sam addmem' to accept a SID for the member
Diffstat (limited to 'source')
-rw-r--r--source/utils/net_sam.c24
1 files changed, 19 insertions, 5 deletions
diff --git a/source/utils/net_sam.c b/source/utils/net_sam.c
index 6321fab54fb..fc7dfea02c5 100644
--- a/source/utils/net_sam.c
+++ b/source/utils/net_sam.c
@@ -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;
}