summaryrefslogtreecommitdiffstats
path: root/daemons
diff options
context:
space:
mode:
authorSumit Bose <sbose@redhat.com>2012-08-27 13:54:08 +0200
committerSumit Bose <sbose@redhat.com>2012-08-31 13:23:17 +0200
commita604c3eda4c48db7d1dd2bed466c594599b147bd (patch)
tree58ff38e5e55e39f62bfb8a96d2a6b5915298eaff /daemons
parentc5652e0053003f2b229047057dfdfd89f4d5b8e0 (diff)
downloadfreeipa-a604c3eda4c48db7d1dd2bed466c594599b147bd.tar.gz
freeipa-a604c3eda4c48db7d1dd2bed466c594599b147bd.tar.xz
freeipa-a604c3eda4c48db7d1dd2bed466c594599b147bd.zip
ipasam: replace sid_compose()
Diffstat (limited to 'daemons')
-rw-r--r--daemons/ipa-sam/ipa_sam.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/daemons/ipa-sam/ipa_sam.c b/daemons/ipa-sam/ipa_sam.c
index e7774f5b3..3f656246f 100644
--- a/daemons/ipa-sam/ipa_sam.c
+++ b/daemons/ipa-sam/ipa_sam.c
@@ -87,7 +87,6 @@ bool sid_check_is_builtin(const struct dom_sid *sid); /* available in libpdb.so
bool sid_check_is_our_sam(const struct dom_sid *sid);
bool sid_linearize(char *outbuf, size_t len, const struct dom_sid *sid); /* available in libsmbconf.so */
bool string_to_sid(struct dom_sid *sidout, const char *sidstr); /* available in libsecurity.so */
-bool sid_compose(struct dom_sid *dst, const struct dom_sid *domain_sid, uint32_t rid); /* available in libsecurity.so */
int dom_sid_compare_domain(const struct dom_sid *sid1, const struct dom_sid *sid2); /* available in libsecurity.so */
char *sid_string_talloc(TALLOC_CTX *mem_ctx, const struct dom_sid *sid); /* available in libsmbconf.so */
char *sid_string_dbg(const struct dom_sid *sid); /* available in libsmbconf.so */
@@ -180,6 +179,20 @@ static void sid_copy(struct dom_sid *dst, const struct dom_sid *src)
}
}
+static bool sid_compose(struct dom_sid *dst, const struct dom_sid *dom_sid,
+ uint32_t rid)
+{
+ if (dom_sid->num_auths >= 15) {
+ return false;
+ }
+
+ sid_copy(dst, dom_sid);
+
+ dst->sub_auths[dst->num_auths++] = rid;
+
+ return true;
+}
+
static bool strnequal(const char *s1, const char *s2, size_t n) {
if (s1 == s2) {
return true;