ipa_hbac_common.c revision 95f5e7963a36b7b68859ce91ae4b232088bbaa09
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi Stephen Gallagher <sgallagh@redhat.com>
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi Copyright (C) 2011 Red Hat
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi This program is free software; you can redistribute it and/or modify
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi it under the terms of the GNU General Public License as published by
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi the Free Software Foundation; either version 3 of the License, or
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi (at your option) any later version.
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi This program is distributed in the hope that it will be useful,
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi but WITHOUT ANY WARRANTY; without even the implied warranty of
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi GNU General Public License for more details.
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi You should have received a copy of the GNU General Public License
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi along with this program. If not, see <http://www.gnu.org/licenses/>.
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomiipa_hbac_save_list(struct sysdb_ctx *sysdb, bool delete_subdir,
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi const char *subdir, struct sss_domain_info *domain,
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi base_dn = sysdb_custom_subtree_dn(sysdb, tmp_ctx, subdir);
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi ret = sysdb_delete_recursive(sysdb, base_dn, true);
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi for (c = 0; c < count; c++) {
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi ret = sysdb_attrs_get_el(list[c], naming_attribute, &el);
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi DEBUG(1, ("[%s] not found.\n", naming_attribute));
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi object_name = talloc_strndup(tmp_ctx, (const char *)el->values[0].data,
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi ret = sysdb_store_custom(sysdb, object_name, subdir, list[c]);
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomiipa_hbac_sysdb_save(struct sysdb_ctx *sysdb, struct sss_domain_info *domain,
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi const char *primary_subdir, const char *attr_name,
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi size_t primary_count, struct sysdb_attrs **primary,
0d1b8b6bec79746c5d89d57dd8c1688946bd9237Josef 'Jeff' Sipek const char *group_subdir, const char *groupattr_name,
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi /* There always has to be at least one
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi * primary entry.
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi /* Save the entries and groups to the cache */
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi DEBUG(SSSDBG_CRIT_FAILURE, ("Failed to start transaction\n"));
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi /* First, save the specific entries */
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi /* Second, save the groups */
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi DEBUG(SSSDBG_CRIT_FAILURE, ("Failed to commit transaction\n"));
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi DEBUG(0, ("Could not cancel sysdb transaction\n"));
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi DEBUG(3, ("Error [%d][%s]\n", ret, strerror(ret)));
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi for (i = 0; i < count; i++) {
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi ret = sysdb_attrs_replace_name(list[i], old_name, new_name);
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomicreate_empty_grouplist(struct hbac_request_element *el)
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi/********************************************
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi * Functions for handling conversion to the *
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi * HBAC evaluator format *
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi ********************************************/
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi /* First create an array of rules */
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi new_rules = talloc_array(tmp_ctx, struct hbac_rule *,
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi /* Create each rule one at a time */
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi ret = hbac_attrs_to_rule(new_rules, hbac_ctx, i, &(new_rules[i]));
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi /* Create the eval request */
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi ret = hbac_ctx_to_eval_request(tmp_ctx, hbac_ctx, &new_request);
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi new_rule = talloc_zero(mem_ctx, struct hbac_rule);
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi DEBUG(4, ("rule has no name, assuming '(none)'.\n"));
4d9181518769b1f78d8078f7fae899fd0b95907fAki Tuomi new_rule->name = talloc_strdup(new_rule, "(none)");
goto done;
&rule_type);
goto done;
goto done;
goto done;
goto done;
goto done;
done:
return ret;
const char *category_attr,
size_t i;
const char **categories;
for (i = 0; categories[i]; i++) {
categories[i]));
done:
return ret;
static errno_t
const char *username,
static errno_t
const char *servicename,
static errno_t
const char *hostname,
static errno_t
const char *rhost;
const char *thost;
goto done;
goto done;
done:
return ret;
static errno_t
const char *username,
unsigned int num_groups = 0;
const char *member_dn;
goto done;
goto done;
goto done;
goto done;
goto done;
num_groups++;
goto done;
done:
return ret;
static errno_t
const char *servicename,
char *name;
goto done;
goto done;
goto done;
goto done;
goto done;
if (!el) {
goto done;
goto done;
&name);
done:
return ret;
static errno_t
const char *hostname,
char *name;
goto done;
goto done;
goto done;
goto done;
goto done;
goto done;
if (!el) {
goto done;
goto done;
&name);
done:
return ret;