diff options
author | Volker Lendecke <vl@samba.org> | 2007-12-15 22:33:52 +0100 |
---|---|---|
committer | Volker Lendecke <vl@samba.org> | 2007-12-15 22:33:52 +0100 |
commit | 79cd97cc3f496f781d809c1ab619afa2cc07293d (patch) | |
tree | 1fe0611629d29261c9edeb854c94588954baeb2b /source3 | |
parent | 4312ad8b98456a59bd5b020d83010695b4baf209 (diff) | |
download | samba-79cd97cc3f496f781d809c1ab619afa2cc07293d.tar.gz |
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 3a0b1b2060facd5f1ac1461b23dd86c75cdd9458)
Diffstat (limited to 'source3')
-rw-r--r-- | source3/lib/util_sid.c | 41 | ||||
-rw-r--r-- | source3/librpc/ndr/sid.c | 5 |
2 files changed, 17 insertions, 29 deletions
diff --git a/source3/lib/util_sid.c b/source3/lib/util_sid.c index b28626cd66f..868ac36d11a 100644 --- a/source3/lib/util_sid.c +++ b/source3/lib/util_sid.c @@ -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; } diff --git a/source3/librpc/ndr/sid.c b/source3/librpc/ndr/sid.c index b621f2485bb..89ab2b8ea50 100644 --- a/source3/librpc/ndr/sid.c +++ b/source3/librpc/ndr/sid.c @@ -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) + |