Author: abartlet
Date: 2004-10-29 08:31:27 +0000 (Fri, 29 Oct 2004)
New Revision: 3358

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=3358

Log:
Try to put all the basic struct dom_sid manipulation functions in one
place.  (I always have trouble finding one half or the other).

Andrew Bartlett

Modified:
   branches/SAMBA_4_0/source/libcli/util/dom_sid.c
   branches/SAMBA_4_0/source/librpc/ndr/ndr_sec.c


Changeset:
Modified: branches/SAMBA_4_0/source/libcli/util/dom_sid.c
===================================================================
--- branches/SAMBA_4_0/source/libcli/util/dom_sid.c     2004-10-29 07:29:26 UTC (rev 
3357)
+++ branches/SAMBA_4_0/source/libcli/util/dom_sid.c     2004-10-29 08:31:27 UTC (rev 
3358)
@@ -23,6 +23,39 @@
 #include "includes.h"
 
 /*
+  convert a dom_sid to a string
+*/
+char *dom_sid_string(TALLOC_CTX *mem_ctx, const struct dom_sid *sid)
+{
+       int i, ofs, maxlen;
+       uint32_t ia;
+       char *ret;
+       
+       if (!sid) {
+               return talloc_strdup(mem_ctx, "(NULL SID)");
+       }
+
+       maxlen = sid->num_auths * 11 + 25;
+       ret = talloc(mem_ctx, maxlen);
+       if (!ret) return talloc_strdup(mem_ctx, "(SID ERR)");
+
+       ia = (sid->id_auth[5]) +
+               (sid->id_auth[4] << 8 ) +
+               (sid->id_auth[3] << 16) +
+               (sid->id_auth[2] << 24);
+
+       ofs = snprintf(ret, maxlen, "S-%u-%lu", 
+                      (uint_t)sid->sid_rev_num, (unsigned long)ia);
+
+       for (i = 0; i < sid->num_auths; i++) {
+               ofs += snprintf(ret + ofs, maxlen - ofs, "-%lu", (unsigned 
long)sid->sub_auths[i]);
+       }
+       
+       return ret;
+}
+
+
+/*
   convert a string to a dom_sid, returning a talloc'd dom_sid
 */
 struct dom_sid *dom_sid_parse_talloc(TALLOC_CTX *mem_ctx, const char *sidstr)
@@ -121,3 +154,27 @@
        return ret;
 }
 
+/*
+  add a rid to a domain dom_sid to make a full dom_sid
+*/
+struct dom_sid *dom_sid_add_rid(TALLOC_CTX *mem_ctx, 
+                               const struct dom_sid *domain_sid, 
+                               uint32_t rid)
+{
+       struct dom_sid *sid;
+
+       sid = talloc_p(mem_ctx, struct dom_sid);
+       if (!sid) return NULL;
+
+       *sid = *domain_sid;
+       /*TODO: use realloc! */
+       sid->sub_auths = talloc_array_p(mem_ctx, uint32_t, sid->num_auths+1);
+       if (!sid->sub_auths) {
+               return NULL;
+       }
+       memcpy(sid->sub_auths, domain_sid->sub_auths, sid->num_auths*sizeof(uint32_t));
+       sid->sub_auths[sid->num_auths] = rid;
+       sid->num_auths++;
+       return sid;
+}
+

Modified: branches/SAMBA_4_0/source/librpc/ndr/ndr_sec.c
===================================================================
--- branches/SAMBA_4_0/source/librpc/ndr/ndr_sec.c      2004-10-29 07:29:26 UTC (rev 
3357)
+++ branches/SAMBA_4_0/source/librpc/ndr/ndr_sec.c      2004-10-29 08:31:27 UTC (rev 
3358)
@@ -51,39 +51,6 @@
 
 
 /*
-  convert a dom_sid to a string
-*/
-char *dom_sid_string(TALLOC_CTX *mem_ctx, const struct dom_sid *sid)
-{
-       int i, ofs, maxlen;
-       uint32_t ia;
-       char *ret;
-       
-       if (!sid) {
-               return talloc_strdup(mem_ctx, "(NULL SID)");
-       }
-
-       maxlen = sid->num_auths * 11 + 25;
-       ret = talloc(mem_ctx, maxlen);
-       if (!ret) return talloc_strdup(mem_ctx, "(SID ERR)");
-
-       ia = (sid->id_auth[5]) +
-               (sid->id_auth[4] << 8 ) +
-               (sid->id_auth[3] << 16) +
-               (sid->id_auth[2] << 24);
-
-       ofs = snprintf(ret, maxlen, "S-%u-%lu", 
-                      (uint_t)sid->sid_rev_num, (unsigned long)ia);
-
-       for (i = 0; i < sid->num_auths; i++) {
-               ofs += snprintf(ret + ofs, maxlen - ofs, "-%lu", (unsigned 
long)sid->sub_auths[i]);
-       }
-       
-       return ret;
-}
-
-
-/*
   print a dom_sid
 */
 void ndr_print_dom_sid(struct ndr_print *ndr, const char *name, struct dom_sid *sid)
@@ -106,30 +73,6 @@
 }
 
 /*
-  add a rid to a domain dom_sid to make a full dom_sid
-*/
-struct dom_sid *dom_sid_add_rid(TALLOC_CTX *mem_ctx, 
-                               const struct dom_sid *domain_sid, 
-                               uint32_t rid)
-{
-       struct dom_sid *sid;
-
-       sid = talloc_p(mem_ctx, struct dom_sid);
-       if (!sid) return NULL;
-
-       *sid = *domain_sid;
-       /*TODO: use realloc! */
-       sid->sub_auths = talloc_array_p(mem_ctx, uint32_t, sid->num_auths+1);
-       if (!sid->sub_auths) {
-               return NULL;
-       }
-       memcpy(sid->sub_auths, domain_sid->sub_auths, sid->num_auths*sizeof(uint32_t));
-       sid->sub_auths[sid->num_auths] = rid;
-       sid->num_auths++;
-       return sid;
-}
-
-/*
   return the wire size of a security_ace
 */
 size_t ndr_size_security_ace(struct security_ace *ace)

Reply via email to