On Mon, 2013-01-07 at 15:01 +0100, Ondrej Kos wrote:
tps://fedorahosted.org/sssd/ticket/1714
The attempt to delete all ghosts for users name and aliases was
failing,
resulting into failure of whole user-add operation. In permissive
mode,
the attempts to delete non-existent entries are not interpreted as
error.
Comments inline.
diff --git a/src/db/sysdb_ops.c b/src/db/sysdb_ops.c
index
4bbc76c5c39501a4d878a1d41faa81919a23228f..6fb9b1d1e17f15710e3e1cff6577865525391699
100644
--- a/src/db/sysdb_ops.c
+++ b/src/db/sysdb_ops.c
@@ -74,6 +74,38 @@ static uint32_t get_attr_as_uint32(struct
ldb_message *msg, const char *attr)
return l;
}
+errno_t
+sss_ldb_modify_permissive(struct ldb_context *ldb,
+ struct ldb_message *msg)
Do not \n after errno_t
Make it a static function.
Properly align the second argument.
You are not returing errno_t here you are returning LDB errors, so just
use 'int'.
+{
+ struct ldb_request *req;
+ errno_t ret = EOK;
'int' not errno_t here.
Whole indent one tab too much after this line.
+ ret = ldb_build_mod_req(&req, ldb, ldb,
+ msg,
+ NULL,
+ NULL,
+ ldb_op_default_callback,
+ NULL);
Also misaligned arguments.
+
+ if (ret != LDB_SUCCESS) return ret;
+
+ ret = ldb_request_add_control(req,
LDB_CONTROL_PERMISSIVE_MODIFY_OID, false, NULL);
Split this line so iut doesn't wrap on 80 please
+ if (ret != LDB_SUCCESS) {
+ talloc_free(req);
+ return ret;
+ }
Indent issue here too in ineer block.
+
+ ret = ldb_request(ldb, req);
+ if (ret == LDB_SUCCESS) {
+ ret = ldb_wait(req->handle, LDB_WAIT_ALL);
+ }
Again indent in inner block.
+ talloc_free(req);
+
+ return ret;
+}
+
Yeah copy&paste from samba code is not straightforward :-)
Once you fix these issues you get an ACK.
Simo.
--
Simo Sorce * Red Hat, Inc * New York