summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Adam <obnox@samba.org>2012-12-03 01:40:37 +0100
committerStefan Metzmacher <metze@samba.org>2012-12-03 08:48:30 +0100
commit671f534e5e02adafe945a4e77813e80b5adaeb70 (patch)
treeeed5e960d21247ede663e3bd10417ad26ede5021
parentd96aeded6193cb6381540c1073182bfb7f079025 (diff)
downloadsamba-671f534e5e02adafe945a4e77813e80b5adaeb70.tar.gz
samba-671f534e5e02adafe945a4e77813e80b5adaeb70.tar.bz2
samba-671f534e5e02adafe945a4e77813e80b5adaeb70.zip
s3:passdb: add sid_check_object_is_for_passdb()
Variant of sid_check_is_for_passdb() that only checks for objects in the various domains, not for the domain sids themselves. Signed-off-by: Michael Adam <obnox@samba.org> Reviewed-by: Stefan Metzmacher <metze@samba.org>
-rw-r--r--source3/lib/util_sid_passdb.c28
-rw-r--r--source3/lib/util_sid_passdb.h6
-rw-r--r--source3/passdb/ABI/pdb-0.sigs1
3 files changed, 35 insertions, 0 deletions
diff --git a/source3/lib/util_sid_passdb.c b/source3/lib/util_sid_passdb.c
index 4378d0fc1e..33fb5420d6 100644
--- a/source3/lib/util_sid_passdb.c
+++ b/source3/lib/util_sid_passdb.c
@@ -23,6 +23,34 @@
#include "passdb/machine_sid.h"
/**
+ * check whether this is an object-sid that should
+ * be treated by the passdb, e.g. for id-mapping.
+ */
+bool sid_check_object_is_for_passdb(const struct dom_sid *sid)
+{
+ if (sid_check_is_in_our_sam(sid)) {
+ return true;
+ }
+
+ if (sid_check_is_in_builtin(sid)) {
+ return true;
+ }
+
+ if (sid_check_is_in_wellknown_domain(sid)) {
+ return true;
+ }
+
+ if (sid_check_is_in_unix_users(sid)) {
+ return true;
+ }
+
+ if (sid_check_is_in_unix_groups(sid)) {
+ return true;
+ }
+
+ return false;
+}
+/**
* check whether this is an object- or domain-sid that should
* be treated by the passdb, e.g. for id-mapping.
*/
diff --git a/source3/lib/util_sid_passdb.h b/source3/lib/util_sid_passdb.h
index bd62e9e497..381d63cff0 100644
--- a/source3/lib/util_sid_passdb.h
+++ b/source3/lib/util_sid_passdb.h
@@ -22,6 +22,12 @@
#define __LIB_UTIL_SID_PASSDB_H__
/**
+ * check whether this is an object-sid that should
+ * be treated by the passdb, e.g. for id-mapping.
+ */
+bool sid_check_object_is_for_passdb(const struct dom_sid *sid);
+
+/**
* check whether this is an object- or domain-sid that should
* be treated by the passdb, e.g. for id-mapping.
*/
diff --git a/source3/passdb/ABI/pdb-0.sigs b/source3/passdb/ABI/pdb-0.sigs
index 47d9423f25..f32ca4f61f 100644
--- a/source3/passdb/ABI/pdb-0.sigs
+++ b/source3/passdb/ABI/pdb-0.sigs
@@ -265,6 +265,7 @@ sid_check_is_unix_groups: bool (const struct dom_sid *)
sid_check_is_unix_users: bool (const struct dom_sid *)
sid_check_is_wellknown_builtin: bool (const struct dom_sid *)
sid_check_is_wellknown_domain: bool (const struct dom_sid *, const char **)
+sid_check_object_is_for_passdb: bool (const struct dom_sid *)
sid_to_gid: bool (const struct dom_sid *, gid_t *)
sid_to_uid: bool (const struct dom_sid *, uid_t *)
sids_to_unixids: bool (const struct dom_sid *, uint32_t, struct unixid *)