summaryrefslogtreecommitdiffstats
path: root/src/ldb_modules
diff options
context:
space:
mode:
authorSimo Sorce <simo@redhat.com>2012-12-18 20:52:02 -0500
committerJakub Hrozek <jhrozek@redhat.com>2012-12-19 18:35:20 +0100
commitaed6196263ebddb6f8ffb12eace11539f5941662 (patch)
tree3988318c9ea79cb56de10282d88a3b5221793034 /src/ldb_modules
parent47c676a3ae558b87837955cf1a801c7b434d748e (diff)
downloadsssd-aed6196263ebddb6f8ffb12eace11539f5941662.tar.gz
sssd-aed6196263ebddb6f8ffb12eace11539f5941662.tar.xz
sssd-aed6196263ebddb6f8ffb12eace11539f5941662.zip
memberof: Prevent unneded failure case
When deleting a user we would fail the operation completely if the member attribute was not found on one of the groups it was allegedly member of. Failing in this case is unnecessary, and can cause issues. Found trying to upgrade db versione (and failing) on one of my RHEL machines. Also removed a tray \ in the companion function that removes ghost members, that function needs no changes as it was already ignoring this kind of failure.
Diffstat (limited to 'src/ldb_modules')
-rw-r--r--src/ldb_modules/memberof.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/ldb_modules/memberof.c b/src/ldb_modules/memberof.c
index 0f947fb06..f7eeb4070 100644
--- a/src/ldb_modules/memberof.c
+++ b/src/ldb_modules/memberof.c
@@ -2617,7 +2617,12 @@ static int mbof_del_muop_callback(struct ldb_request *req,
return ldb_module_done(ctx->req, NULL, NULL,
LDB_ERR_OPERATIONS_ERROR);
}
- if (ares->error != LDB_SUCCESS) {
+ /* if the attribute was not present it means the db is not
+ * perfectly consistent but failing here is not useful
+ * anyway and missing entries cause no harm if we are trying
+ * to remove them anyway */
+ if (ares->error != LDB_SUCCESS &&
+ ares->error != LDB_ERR_NO_SUCH_ATTRIBUTE) {
return ldb_module_done(ctx->req,
ares->controls,
ares->response,
@@ -2733,7 +2738,7 @@ static int mbof_del_ghop_callback(struct ldb_request *req,
* might have been directly nested in the parent as well and
* updated with another replace operation.
*/
- if (ares->error != LDB_SUCCESS && \
+ if (ares->error != LDB_SUCCESS &&
ares->error != LDB_ERR_NO_SUCH_ATTRIBUTE) {
return ldb_module_done(ctx->req,
ares->controls,