summaryrefslogtreecommitdiffstats
path: root/src/db/sysdb_ops.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/db/sysdb_ops.c')
-rw-r--r--src/db/sysdb_ops.c38
1 files changed, 32 insertions, 6 deletions
diff --git a/src/db/sysdb_ops.c b/src/db/sysdb_ops.c
index 8eb81938f..41070843b 100644
--- a/src/db/sysdb_ops.c
+++ b/src/db/sysdb_ops.c
@@ -22,6 +22,7 @@
#include "util/util.h"
#include "db/sysdb_private.h"
#include "db/sysdb_services.h"
+#include "db/sysdb_autofs.h"
#include "util/crypto/sss_crypto.h"
#include <time.h>
@@ -1668,24 +1669,45 @@ sysdb_group_membership_mod(struct sysdb_ctx *sysdb,
return ENOMEM;
}
- group_dn = sysdb_group_dn(sysdb, tmp_ctx, sysdb->domain->name, group);
- if (!group_dn) {
- ret = ENOMEM;
- goto done;
- }
-
if (type == SYSDB_MEMBER_USER) {
member_dn = sysdb_user_dn(sysdb, tmp_ctx, sysdb->domain->name, member);
if (!member_dn) {
ret = ENOMEM;
goto done;
}
+
+ group_dn = sysdb_group_dn(sysdb, tmp_ctx, sysdb->domain->name, group);
+ if (!group_dn) {
+ ret = ENOMEM;
+ goto done;
+ }
} else if (type == SYSDB_MEMBER_GROUP) {
member_dn = sysdb_group_dn(sysdb, tmp_ctx, sysdb->domain->name, member);
if (!member_dn) {
ret = ENOMEM;
goto done;
}
+
+ group_dn = sysdb_group_dn(sysdb, tmp_ctx, sysdb->domain->name, group);
+ if (!group_dn) {
+ ret = ENOMEM;
+ goto done;
+ }
+ } else if (type == SYSDB_MEMBER_AUTOFSENTRY) {
+ /* FIXME - I don't like autofs specific stuff in sysdb_ops.c
+ * Maybe we should introduce sysdb_common.c ?
+ */
+ member_dn = sysdb_autofsentry_dn(tmp_ctx, sysdb, member);
+ if (!member_dn) {
+ ret = ENOMEM;
+ goto done;
+ }
+
+ group_dn = sysdb_autofsmap_dn(tmp_ctx, sysdb, group);
+ if (!group_dn) {
+ ret = ENOMEM;
+ goto done;
+ }
} else {
ret = EINVAL;
goto done;
@@ -2937,6 +2959,10 @@ errno_t sysdb_remove_attrs(struct sysdb_ctx *sysdb,
case SYSDB_MEMBER_SERVICE:
msg->dn = sysdb_svc_dn(sysdb, msg, sysdb->domain->name, name);
break;
+
+ case SYSDB_MEMBER_AUTOFSENTRY:
+ msg->dn = sysdb_autofsmap_dn(msg, sysdb, name);
+ break;
}
if (!msg->dn) {
ret = ENOMEM;