mirror of
https://github.com/samba-team/samba.git
synced 2025-03-05 20:58:40 +03:00
Cleaned up SidToString() and StringToSid() exit paths.
Can now use user%password format in $USER environment variable. -U option is now optional.
This commit is contained in:
parent
56a93567a1
commit
e21f2ef4fb
@ -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) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user