diff options
Diffstat (limited to 'src/db/sysdb.c')
-rw-r--r-- | src/db/sysdb.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/db/sysdb.c b/src/db/sysdb.c index ee8d2fc6..c6a3fa41 100644 --- a/src/db/sysdb.c +++ b/src/db/sysdb.c @@ -233,6 +233,25 @@ struct ldb_dn *sysdb_sudocmd_dn(struct sysdb_ctx *sysdb, TALLOC_CTX *mem_ctx, return dn; } +struct ldb_dn *sysdb_sudorule_dn(struct sysdb_ctx *sysdb, TALLOC_CTX *mem_ctx, + const char *domain, const char *rule) +{ + errno_t ret; + char *clean_rule; + struct ldb_dn *dn; + + ret = sysdb_dn_sanitize(NULL, rule, &clean_rule); + if (ret != EOK) { + return NULL; + } + + dn = ldb_dn_new_fmt(mem_ctx, sysdb->ldb, SYSDB_TMPL_SUDORULE, + clean_rule, domain); + talloc_free(clean_rule); + + return dn; +} + errno_t sysdb_get_rdn(struct sysdb_ctx *sysdb, TALLOC_CTX *mem_ctx, const char *_dn, char **_name, char **_val) { |