|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
From d38421b5beb91de9213203bee87a3717952f52bc Mon Sep 17 00:00:00 2001
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= <fidencio@redhat.com>
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
Date: Wed, 14 Mar 2018 22:55:21 +0100
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
Subject: [PATCH 03/15] CONFDB: Start a ldb transaction from
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
sss_ldb_modify_permissive()
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
MIME-Version: 1.0
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
Content-Type: text/plain; charset=UTF-8
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
Content-Transfer-Encoding: 8bit
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
The reason why confdb_expand_app_domains() always fails is because we
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
try to do a ldb_request() without starting a ldb transaction.
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
When we're dealing with ldb_modify(), ldb_add(), ldb_delete() kind of
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
messages, those call ldb_autotransaction_request() which will start a
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
new transaction and treat it properly when doing the ldb_request(). In
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
our case that we're calling ldb_request() by our own, we must ensure
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
that the transaction is started and properly deal with it._
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
It's never been noticed because in the only place the function is used
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
its errors are ignored.
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
Resolves:
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
https://pagure.io/SSSD/sssd/issue/3660
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
Signed-off-by: Fabiano FidĂȘncio <fidencio@redhat.com>
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
Reviewed-by: Jakub Hrozek <jhrozek@redhat.com>
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
---
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
src/db/sysdb_ops.c | 39 ++++++++++++++++++++++++++++++++++++++-
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
1 file changed, 38 insertions(+), 1 deletion(-)
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
diff --git a/src/db/sysdb_ops.c b/src/db/sysdb_ops.c
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
index 15915101e..cc86a114e 100644
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
--- a/src/db/sysdb_ops.c
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
+++ b/src/db/sysdb_ops.c
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
@@ -66,7 +66,9 @@ int sss_ldb_modify_permissive(struct ldb_context *ldb,
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
struct ldb_message *msg)
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
{
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
struct ldb_request *req;
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
- int ret = EOK;
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
+ int ret;
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
+ int cancel_ret;
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
+ bool in_transaction = false;
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
ret = ldb_build_mod_req(&req, ldb, ldb,
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
msg,
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
@@ -84,9 +86,44 @@ int sss_ldb_modify_permissive(struct ldb_context *ldb,
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
return ret;
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
}
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
+ ret = ldb_transaction_start(ldb);
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
+ if (ret != LDB_SUCCESS) {
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
+ DEBUG(SSSDBG_CRIT_FAILURE,
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
+ "Failed to start ldb transaction [%d]: %s\n",
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
+ ret, sss_strerror(ret));
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
+ goto done;
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
+
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
+ in_transaction = true;
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
+
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
ret = ldb_request(ldb, req);
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
if (ret == LDB_SUCCESS) {
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
ret = ldb_wait(req->handle, LDB_WAIT_ALL);
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
+ if (ret != LDB_SUCCESS) {
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
+ goto done;
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
+
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
+ ret = ldb_transaction_commit(ldb);
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
+ if (ret != LDB_SUCCESS) {
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
+ DEBUG(SSSDBG_CRIT_FAILURE,
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
+ "Failed to commit ldb transaction [%d]: %s\n",
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
+ ret, sss_strerror(ret));
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
+ goto done;
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
+
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
+ in_transaction = false;
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
+
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
+ ret = LDB_SUCCESS;
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
+
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
+done:
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
+ if (in_transaction) {
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
+ cancel_ret = ldb_transaction_cancel(ldb);
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
+ if (cancel_ret != LDB_SUCCESS) {
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
+ DEBUG(SSSDBG_CRIT_FAILURE,
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
+ "Failed to cancel ldb transaction [%d]: %s\n",
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
+ cancel_ret, sss_strerror(cancel_ret));
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
}
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
talloc_free(req);
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
--
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
2.14.3
|
|
![](https://seccdn.libravatar.org/avatar/e97db2cfa6e315e83e77676f7b13ad283ba0738ec4a79f8efe2612fafcdf04b6?s=16&d=retro) |
be32b69 |
|