1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-11 05:18:09 +03:00

Use dom_sid_string for sid_string_talloc

Remove some code duplication, but introduce one more dependency on librpc/ndr.
Easily turned around so that librpc/ndr depends on lib/util_sid if necessary
(This used to be commit 3a0b1b2060)
This commit is contained in:
Volker Lendecke 2007-12-15 22:33:52 +01:00
parent 4312ad8b98
commit 79cd97cc3f
2 changed files with 17 additions and 29 deletions

View File

@ -174,40 +174,23 @@ const char *get_global_sam_name(void)
char *sid_to_string(fstring sidstr_out, const DOM_SID *sid)
{
char subauth[16];
int i;
uint32 ia;
if (!sid) {
fstrcpy(sidstr_out, "(NULL SID)");
return sidstr_out;
}
/*
* BIG NOTE: this function only does SIDS where the identauth is not >= 2^32
* in a range of 2^48.
*/
ia = (sid->id_auth[5]) +
(sid->id_auth[4] << 8 ) +
(sid->id_auth[3] << 16) +
(sid->id_auth[2] << 24);
slprintf(sidstr_out, sizeof(fstring) - 1, "S-%u-%lu", (unsigned int)sid->sid_rev_num, (unsigned long)ia);
for (i = 0; i < sid->num_auths; i++) {
slprintf(subauth, sizeof(subauth)-1, "-%lu", (unsigned long)sid->sub_auths[i]);
fstrcat(sidstr_out, subauth);
}
char *str = sid_string_talloc(talloc_tos(), sid);
fstrcpy(sidstr_out, str);
TALLOC_FREE(str);
return sidstr_out;
}
/*****************************************************************
Essentially a renamed dom_sid_string from librpc/ndr with a
panic if it didn't work
This introduces a dependency on librpc/ndr/sid.o which can easily
be turned around if necessary
*****************************************************************/
char *sid_string_talloc(TALLOC_CTX *mem_ctx, const DOM_SID *sid)
{
fstring sid_str;
char *result;
sid_to_string(sid_str, sid);
result = talloc_strdup(mem_ctx, sid_str);
char *result = dom_sid_string(mem_ctx, sid);
SMB_ASSERT(result != NULL);
return result;
}

View File

@ -75,6 +75,11 @@ char *dom_sid_string(TALLOC_CTX *mem_ctx, const struct dom_sid *sid)
ret = (char *)talloc_size(mem_ctx, maxlen);
if (!ret) return talloc_strdup(mem_ctx, "(SID ERR)");
/*
* BIG NOTE: this function only does SIDS where the identauth is not
* >= ^32 in a range of 2^48.
*/
ia = (sid->id_auth[5]) +
(sid->id_auth[4] << 8 ) +
(sid->id_auth[3] << 16) +