summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/utils/smbcacls.c44
1 files changed, 27 insertions, 17 deletions
diff --git a/source3/utils/smbcacls.c b/source3/utils/smbcacls.c
index f8059a8b8b..bff80e7e5f 100644
--- a/source3/utils/smbcacls.c
+++ b/source3/utils/smbcacls.c
@@ -108,18 +108,19 @@ static void SidToString(fstring str, DOM_SID *sid)
/* Ask LSA to convert the sid to a name */
- if (open_policy_hnd() &&
+ if (!open_policy_hnd() ||
cli_lsa_lookup_sids(&lsa_cli, &pol, 1, sid, &names, &types,
- &num_names) == NT_STATUS_NOPROBLEMO) {
-
- /* Converted OK */
-
- fstrcpy(str, names[0]);
-
- safe_free(names[0]);
- safe_free(names);
- safe_free(types);
+ &num_names) != NT_STATUS_NOPROBLEMO) {
+ return;
}
+
+ /* Converted OK */
+
+ fstrcpy(str, names[0]);
+
+ safe_free(names[0]);
+ safe_free(names);
+ safe_free(types);
}
/* convert a string to a SID, either numeric or username/group */
@@ -130,14 +131,11 @@ static BOOL StringToSid(DOM_SID *sid, char *str)
int num_sids;
BOOL result = True;
- /* Short cut */
-
if (strncmp(str, "S-", 2) == 0) {
- result = string_to_sid(sid, str);
- goto done;
+ return string_to_sid(sid, str);
}
- if (open_policy_hnd() &&
+ if (!open_policy_hnd() ||
cli_lsa_lookup_names(&lsa_cli, &pol, 1, &str, &sids, &types,
&num_sids) != NT_STATUS_NOPROBLEMO) {
result = string_to_sid(sid, str);
@@ -712,7 +710,7 @@ struct cli_state *connect_one(char *share)
static void usage(void)
{
printf(
-"Usage: smbcacls //server1/share1 filename -U username [options]\n\
+"Usage: smbcacls //server1/share1 filename [options]\n\
\n\
\t-D <acls> delete an acl\n\
\t-M <acls> modify an acl\n\
@@ -753,7 +751,7 @@ You can string acls together with spaces, commas or newlines\n\
dbf = stderr;
- if (argc < 4 || argv[1][0] == '-') {
+ if (argc < 3 || argv[1][0] == '-') {
usage();
exit(1);
}
@@ -776,6 +774,14 @@ You can string acls together with spaces, commas or newlines\n\
if (getenv("USER")) {
pstrcpy(username,getenv("USER"));
+
+ if ((p=strchr(username,'%'))) {
+ *p = 0;
+ pstrcpy(password,p+1);
+ got_pass = True;
+ memset(strchr(getenv("USER"), '%') + 1, 'X',
+ strlen(password));
+ }
}
seed = time(NULL);
@@ -848,11 +854,15 @@ You can string acls together with spaces, commas or newlines\n\
exit(1);
}
+ /* Make connection to server */
+
if (!test_args) {
cli = connect_one(share);
if (!cli) exit(1);
}
+ /* Perform requested action */
+
if (change_mode != REQUEST_NONE) {
owner_set(cli, change_mode, filename, owner_username);
} else if (the_acl) {