summaryrefslogtreecommitdiffstats
path: root/src/db
diff options
context:
space:
mode:
Diffstat (limited to 'src/db')
-rw-r--r--src/db/sysdb.c22
-rw-r--r--src/db/sysdb_ops.c30
-rw-r--r--src/db/sysdb_private.h8
-rw-r--r--src/db/sysdb_ranges.c19
-rw-r--r--src/db/sysdb_services.c9
5 files changed, 51 insertions, 37 deletions
diff --git a/src/db/sysdb.c b/src/db/sysdb.c
index f83d236c8..81223ad74 100644
--- a/src/db/sysdb.c
+++ b/src/db/sysdb.c
@@ -2112,8 +2112,8 @@ done:
return EOK;
}
-int add_string(struct ldb_message *msg, int flags,
- const char *attr, const char *value)
+static int sysdb_ldb_msg_string_helper(struct ldb_message *msg, int flags,
+ const char *attr, const char *value)
{
int ret;
@@ -2124,3 +2124,21 @@ int add_string(struct ldb_message *msg, int flags,
}
return ENOMEM;
}
+
+int sysdb_add_string(struct ldb_message *msg,
+ const char *attr, const char *value)
+{
+ return sysdb_ldb_msg_string_helper(msg, LDB_FLAG_MOD_ADD, attr, value);
+}
+
+int sysdb_replace_string(struct ldb_message *msg,
+ const char *attr, const char *value)
+{
+ return sysdb_ldb_msg_string_helper(msg, LDB_FLAG_MOD_REPLACE, attr, value);
+}
+
+int sysdb_delete_string(struct ldb_message *msg,
+ const char *attr, const char *value)
+{
+ return sysdb_ldb_msg_string_helper(msg, LDB_FLAG_MOD_DELETE, attr, value);
+}
diff --git a/src/db/sysdb_ops.c b/src/db/sysdb_ops.c
index 1a93956b0..62378b39c 100644
--- a/src/db/sysdb_ops.c
+++ b/src/db/sysdb_ops.c
@@ -1037,10 +1037,10 @@ int sysdb_add_basic_user(struct sss_domain_info *domain,
ERROR_OUT(ret, ENOMEM, done);
}
- ret = add_string(msg, LDB_FLAG_MOD_ADD, SYSDB_OBJECTCLASS, SYSDB_USER_CLASS);
+ ret = sysdb_add_string(msg, SYSDB_OBJECTCLASS, SYSDB_USER_CLASS);
if (ret) goto done;
- ret = add_string(msg, LDB_FLAG_MOD_ADD, SYSDB_NAME, name);
+ ret = sysdb_add_string(msg, SYSDB_NAME, name);
if (ret) goto done;
ret = add_ulong(msg, LDB_FLAG_MOD_ADD, SYSDB_UIDNUM, (unsigned long)uid);
@@ -1054,19 +1054,19 @@ int sysdb_add_basic_user(struct sss_domain_info *domain,
* admins to decide if they want to keep it in sync if they change
* one of the 2 */
if (gecos && *gecos) {
- ret = add_string(msg, LDB_FLAG_MOD_ADD, SYSDB_FULLNAME, gecos);
+ ret = sysdb_add_string(msg, SYSDB_FULLNAME, gecos);
if (ret) goto done;
- ret = add_string(msg, LDB_FLAG_MOD_ADD, SYSDB_GECOS, gecos);
+ ret = sysdb_add_string(msg, SYSDB_GECOS, gecos);
if (ret) goto done;
}
if (homedir && *homedir) {
- ret = add_string(msg, LDB_FLAG_MOD_ADD, SYSDB_HOMEDIR, homedir);
+ ret = sysdb_add_string(msg, SYSDB_HOMEDIR, homedir);
if (ret) goto done;
}
if (shell && *shell) {
- ret = add_string(msg, LDB_FLAG_MOD_ADD, SYSDB_SHELL, shell);
+ ret = sysdb_add_string(msg, SYSDB_SHELL, shell);
if (ret) goto done;
}
@@ -1137,11 +1137,11 @@ sysdb_remove_ghost_from_group(struct sss_domain_info *dom,
}
if (add_member) {
- ret = add_string(msg, LDB_FLAG_MOD_ADD, SYSDB_MEMBER, userdn);
+ ret = sysdb_add_string(msg, SYSDB_MEMBER, userdn);
if (ret) goto done;
}
- ret = add_string(msg, LDB_FLAG_MOD_DELETE, SYSDB_GHOST, name);
+ ret = sysdb_delete_string(msg, SYSDB_GHOST, name);
if (ret) goto done;
/* Delete aliases from the ghost attribute as well */
@@ -1452,10 +1452,10 @@ int sysdb_add_basic_group(struct sss_domain_info *domain,
ERROR_OUT(ret, ENOMEM, done);
}
- ret = add_string(msg, LDB_FLAG_MOD_ADD, SYSDB_OBJECTCLASS, SYSDB_GROUP_CLASS);
+ ret = sysdb_add_string(msg, SYSDB_OBJECTCLASS, SYSDB_GROUP_CLASS);
if (ret) goto done;
- ret = add_string(msg, LDB_FLAG_MOD_ADD, SYSDB_NAME, name);
+ ret = sysdb_add_string(msg, SYSDB_NAME, name);
if (ret) goto done;
ret = add_ulong(msg, LDB_FLAG_MOD_ADD, SYSDB_GIDNUM, (unsigned long)gid);
@@ -1765,16 +1765,14 @@ int sysdb_add_basic_netgroup(struct sss_domain_info *domain,
ERROR_OUT(ret, ENOMEM, done);
}
- ret = add_string(msg, LDB_FLAG_MOD_ADD,
- SYSDB_OBJECTCLASS, SYSDB_NETGROUP_CLASS);
+ ret = sysdb_add_string(msg, SYSDB_OBJECTCLASS, SYSDB_NETGROUP_CLASS);
if (ret) goto done;
- ret = add_string(msg, LDB_FLAG_MOD_ADD, SYSDB_NAME, name);
+ ret = sysdb_add_string(msg, SYSDB_NAME, name);
if (ret) goto done;
if (description && *description) {
- ret = add_string(msg, LDB_FLAG_MOD_ADD,
- SYSDB_DESCRIPTION, description);
+ ret = sysdb_add_string(msg, SYSDB_DESCRIPTION, description);
if (ret) goto done;
}
@@ -2794,7 +2792,7 @@ int sysdb_delete_user(struct sss_domain_info *domain,
msg->dn = msgs[i]->dn;
- ret = add_string(msg, LDB_FLAG_MOD_DELETE, SYSDB_GHOST, name);
+ ret = sysdb_delete_string(msg, SYSDB_GHOST, name);
if (ret) goto fail;
ret = ldb_modify(domain->sysdb->ldb, msg);
diff --git a/src/db/sysdb_private.h b/src/db/sysdb_private.h
index c2c8d7a05..75a58c6d3 100644
--- a/src/db/sysdb_private.h
+++ b/src/db/sysdb_private.h
@@ -124,8 +124,12 @@ int sysdb_upgrade_14(struct sysdb_ctx *sysdb, const char **ver);
int sysdb_upgrade_15(struct sysdb_ctx *sysdb, const char **ver);
int sysdb_upgrade_16(struct sysdb_ctx *sysdb, const char **ver);
-int add_string(struct ldb_message *msg, int flags,
- const char *attr, const char *value);
+int sysdb_add_string(struct ldb_message *msg,
+ const char *attr, const char *value);
+int sysdb_replace_string(struct ldb_message *msg,
+ const char *attr, const char *value);
+int sysdb_delete_string(struct ldb_message *msg,
+ const char *attr, const char *value);
int add_ulong(struct ldb_message *msg, int flags,
const char *attr, unsigned long value);
diff --git a/src/db/sysdb_ranges.c b/src/db/sysdb_ranges.c
index 431afd10e..da599bf30 100644
--- a/src/db/sysdb_ranges.c
+++ b/src/db/sysdb_ranges.c
@@ -198,13 +198,12 @@ errno_t sysdb_range_create(struct sysdb_ctx *sysdb, struct range_info *range)
goto done;
}
- ret = add_string(msg, LDB_FLAG_MOD_ADD, SYSDB_OBJECTCLASS,
- SYSDB_ID_RANGE_CLASS);
+ ret = sysdb_add_string(msg, SYSDB_OBJECTCLASS, SYSDB_ID_RANGE_CLASS);
if (ret) goto done;
if (range->trusted_dom_sid == NULL && range->secondary_base_rid != 0) {
- ret = add_string(msg, LDB_FLAG_MOD_ADD, SYSDB_OBJECTCLASS,
- SYSDB_DOMAIN_ID_RANGE_CLASS);
+ ret = sysdb_add_string(msg, SYSDB_OBJECTCLASS,
+ SYSDB_DOMAIN_ID_RANGE_CLASS);
if (ret) goto done;
ret = add_ulong(msg, LDB_FLAG_MOD_ADD, SYSDB_SECONDARY_BASE_RID,
@@ -212,16 +211,15 @@ errno_t sysdb_range_create(struct sysdb_ctx *sysdb, struct range_info *range)
if (ret) goto done;
} else if (range->trusted_dom_sid != NULL &&
range->secondary_base_rid == 0) {
- ret = add_string(msg, LDB_FLAG_MOD_ADD, SYSDB_OBJECTCLASS,
- SYSDB_TRUSTED_AD_DOMAIN_RANGE_CLASS);
+ ret = sysdb_add_string(msg, SYSDB_OBJECTCLASS,
+ SYSDB_TRUSTED_AD_DOMAIN_RANGE_CLASS);
if (ret) goto done;
- ret = add_string(msg, LDB_FLAG_MOD_ADD, SYSDB_DOMAIN_ID,
- range->trusted_dom_sid);
+ ret = sysdb_add_string(msg, SYSDB_DOMAIN_ID, range->trusted_dom_sid);
if (ret) goto done;
}
- ret = add_string(msg, LDB_FLAG_MOD_ADD, SYSDB_NAME, range->name);
+ ret = sysdb_add_string(msg, SYSDB_NAME, range->name);
if (ret) goto done;
ret = add_ulong(msg, LDB_FLAG_MOD_ADD, SYSDB_BASE_ID,
@@ -240,8 +238,7 @@ errno_t sysdb_range_create(struct sysdb_ctx *sysdb, struct range_info *range)
(unsigned long)time(NULL));
if (ret) goto done;
- ret = add_string(msg, LDB_FLAG_MOD_ADD, SYSDB_ID_RANGE_TYPE,
- range->range_type);
+ ret = sysdb_add_string(msg, SYSDB_ID_RANGE_TYPE, range->range_type);
if (ret) goto done;
ret = ldb_add(sysdb->ldb, msg);
diff --git a/src/db/sysdb_services.c b/src/db/sysdb_services.c
index 37f7ec5ff..20c88b724 100644
--- a/src/db/sysdb_services.c
+++ b/src/db/sysdb_services.c
@@ -460,13 +460,11 @@ sysdb_svc_add(TALLOC_CTX *mem_ctx,
}
/* Objectclass */
- ret = add_string(msg, LDB_FLAG_MOD_ADD,
- SYSDB_OBJECTCLASS, SYSDB_SVC_CLASS);
+ ret = sysdb_add_string(msg, SYSDB_OBJECTCLASS, SYSDB_SVC_CLASS);
if (ret != EOK) goto done;
/* Set the primary name */
- ret = add_string(msg, LDB_FLAG_MOD_ADD,
- SYSDB_NAME, primary_name);
+ ret = sysdb_add_string(msg, SYSDB_NAME, primary_name);
if (ret != EOK) goto done;
/* Set the port number */
@@ -623,8 +621,7 @@ sysdb_svc_remove_alias(struct sysdb_ctx *sysdb,
msg->dn = dn;
- ret = add_string(msg, SYSDB_MOD_DEL,
- SYSDB_NAME_ALIAS, alias);
+ ret = sysdb_delete_string(msg, SYSDB_NAME_ALIAS, alias);
if (ret != EOK) goto done;
lret = ldb_modify(sysdb->ldb, msg);