Author: jerry Date: 2006-03-24 23:54:08 +0000 (Fri, 24 Mar 2006) New Revision: 14699
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=14699 Log: allow 'net sam addmem' to accept a SID for the member Modified: branches/SAMBA_3_0/source/utils/net_sam.c trunk/source/utils/net_sam.c Changeset: Modified: branches/SAMBA_3_0/source/utils/net_sam.c =================================================================== --- branches/SAMBA_3_0/source/utils/net_sam.c 2006-03-24 22:04:16 UTC (rev 14698) +++ branches/SAMBA_3_0/source/utils/net_sam.c 2006-03-24 23:54:08 UTC (rev 14699) @@ -533,10 +533,24 @@ 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 @@ 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; } Modified: trunk/source/utils/net_sam.c =================================================================== --- trunk/source/utils/net_sam.c 2006-03-24 22:04:16 UTC (rev 14698) +++ trunk/source/utils/net_sam.c 2006-03-24 23:54:08 UTC (rev 14699) @@ -533,10 +533,24 @@ 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 @@ 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; }