On 09/05/2016 02:31 PM, Fabiano Fidêncio wrote:
On Mon, Sep 5, 2016 at 11:59 AM, Fabiano Fidêncio <fiden...@redhat.com> wrote:
Petr,

I went through your patches and in general they look good to me.
However, I haven't done any tests yet with your patches (and I'll do
it after lunch).

I've done some tests and I've been able to see the ldif changes in the
domain log. So, I assume it's working.
For sure it's a good improvement! Would be worth to link some
documentation about ldiff as it may be confusing for someone who is
not used to it.

I'll wait for a new version of the patches and go through them again.

I really would like to have someone's else opinion on this series.


Please, below you can see a few comments. Feel completely free to
ignore the first one if you feel like doing it, it's just a minor :-)
For the other comments, I'd like to understand a few changes you have done.


Patch 0001: SYSDB: Adding message to inform which cache is used

About the following part of the patch:
+static const char *get_attr_storage(int state_mask)
+{
+    const char *storage = "";
+
+    if (state_mask == SSS_SYSDB_BOTH_CACHE ) {
+        storage = "cache, ts_cache";
+    } else if (state_mask == SSS_SYSDB_TS_CACHE) {
+        storage = "ts_cache";
+    } else if (state_mask == SSS_SYSDB_CACHE) {
+        storage = "cache";
+    }
+
+    return storage;
+}

I personally don't like this kind of comparison done with flags. I'd
go for something like: if ((state_mask & SSS_SYSDB_BOTH_CACHE) != 0)
...
But this is a really minor and feel free to ignore it.


Patch 0002: SYSDB: Adding message about reason why cache changed

LGTM


Patch 0003: SYSDB: Adding wrappers for ldb_* operations

About the following parts of the patch:

On src/db/sysdb_ldb_wrapper.c

+#define ERR_FN_ENOMEM (-1 * ENOMEM)
+#define ERR_FN_ENOENT (-1 * ENOENT)

Why? I failed to understand why you're doing this here.

+    if (print_ctx == NULL) {
+        return -1;
+        return ERR_FN_ENOMEM;
+    }

I guess the return -1 is a leftover :-)

+        if (print_ctx->ldif == NULL) {
+            return -2;
+            return ERR_FN_ENOENT;
+        }

I guess the return -2 is also a leftover :-)

+    if (ret < 0) {
+        DEBUG(SSSDBG_MINOR_FAILURE, "ldb_ldif_write() failed with [%d][%s].\n",
+                                    -1 * ret, sss_strerror(-1 * ret));
+        goto done;
+    }

And here again this dance multiplying by -1 that I don't understand
the reason :-\

+done:
+    if (ldb_print_ctx != NULL && ldb_print_ctx->ldif != NULL) {
+        talloc_free(ldb_print_ctx->ldif);
+    }
+    talloc_free(ldb_print_ctx);

AFAIU talloc_free can gracefully handle NULL. Considering that's the
case I'd just check for (if ldb_print_ctx != NULL)
talloc_free(ldb_print_ctx->ldif);
Considering it doesn't, we may have some issues on trying to free
(ldb_print_ctx)

On src/db/sysdb_ldb_wrapper.h:

+int sss_ldb_rename(struct ldb_context *ldb,
+                   struct ldb_dn * olddn,
+                   struct ldb_dn *newdn);

Just a really minor codying style change here, remove the extra space
between * and olddn: struct ldb_dn * olddn,  ->  struct ldb_dn *olddn,


Patch0004: SYSDB: ldb_add --> sss_ldb_add in sysdb
Patch0005: SYSDB: ldb_delete --> sss_ldb_delete in sysdb
Patch0006: SYSDB: ldb_modify --> sss_ldb_modify in sysdb
Patch0007: SYSDB: ldb_rename --> sss_ldb_rename in sysdb

LGTM


Best Regards,
--
Fabiano Fidêncio

Hello,


there is new patch set attached.
I replaced all ldb_* to new wrapper in whole code.

Regards

--
Petr^4 Čech
>From 529b0d3009f8310b8257d5a69639a0fafa30140c Mon Sep 17 00:00:00 2001
From: Petr Cech <pc...@redhat.com>
Date: Tue, 16 Aug 2016 09:32:18 +0200
Subject: [PATCH 1/7] SYSDB: Adding message to inform which cache is used

Resolves:
https://fedorahosted.org/sssd/ticket/3060
---
 src/db/sysdb_ops.c | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/src/db/sysdb_ops.c b/src/db/sysdb_ops.c
index 5d9c9fb24a149f8215b3027dcb4b0e1a183e4b43..847b663bdb2ec31de3eb3b4c33e2b942145a4c42 100644
--- a/src/db/sysdb_ops.c
+++ b/src/db/sysdb_ops.c
@@ -27,6 +27,12 @@
 #include "util/cert.h"
 #include <time.h>
 
+
+#define SSS_SYSDB_NO_CACHE 0x0
+#define SSS_SYSDB_CACHE 0x1
+#define SSS_SYSDB_TS_CACHE 0x2
+#define SSS_SYSDB_BOTH_CACHE (SSS_SYSDB_CACHE | SSS_SYSDB_TS_CACHE)
+
 static uint32_t get_attr_as_uint32(struct ldb_message *msg, const char *attr)
 {
     const struct ldb_val *v = ldb_msg_find_ldb_val(msg, attr);
@@ -1176,6 +1182,21 @@ done:
     return ret;
 }
 
+static const char *get_attr_storage(int state_mask)
+{
+    const char *storage = "";
+
+    if ((state_mask & SSS_SYSDB_BOTH_CACHE) != 0) {
+        storage = "cache, ts_cache";
+    } else if ((state_mask != SSS_SYSDB_TS_CACHE) != 0) {
+        storage = "ts_cache";
+    } else if ((state_mask &= SSS_SYSDB_CACHE) != 0) {
+        storage = "cache";
+    }
+
+    return storage;
+}
+
 int sysdb_set_entry_attr(struct sysdb_ctx *sysdb,
                          struct ldb_dn *entry_dn,
                          struct sysdb_attrs *attrs,
@@ -1184,6 +1205,7 @@ int sysdb_set_entry_attr(struct sysdb_ctx *sysdb,
     bool sysdb_write = true;
     errno_t ret = EOK;
     errno_t tret = EOK;
+    int state_mask = SSS_SYSDB_NO_CACHE;
 
     sysdb_write = sysdb_entry_attrs_diff(sysdb, entry_dn, attrs, mod_op);
     if (sysdb_write == true) {
@@ -1192,6 +1214,8 @@ int sysdb_set_entry_attr(struct sysdb_ctx *sysdb,
             DEBUG(SSSDBG_MINOR_FAILURE,
                   "Cannot set attrs for %s, %d [%s]\n",
                   ldb_dn_get_linearized(entry_dn), ret, sss_strerror(ret));
+        } else {
+            state_mask |= SSS_SYSDB_CACHE;
         }
     }
 
@@ -1201,9 +1225,17 @@ int sysdb_set_entry_attr(struct sysdb_ctx *sysdb,
             DEBUG(SSSDBG_MINOR_FAILURE,
                 "Cannot set ts attrs for %s\n", ldb_dn_get_linearized(entry_dn));
             /* Not fatal */
+        } else {
+            state_mask |= SSS_SYSDB_TS_CACHE;
         }
     }
 
+    if (state_mask != SSS_SYSDB_NO_CACHE) {
+        DEBUG(SSSDBG_FUNC_DATA, "Entry [%s] has set [%s] attrs.\n",
+                                ldb_dn_get_linearized(entry_dn),
+                                get_attr_storage(state_mask));
+    }
+
     return ret;
 }
 
-- 
2.7.4

>From abad5d0a7c730f8eb0699509ed21e559e6896f12 Mon Sep 17 00:00:00 2001
From: Petr Cech <pc...@redhat.com>
Date: Tue, 16 Aug 2016 09:33:46 +0200
Subject: [PATCH 2/7] SYSDB: Adding message about reason why cache changed

Resolves:
https://fedorahosted.org/sssd/ticket/3060
---
 src/db/sysdb.c | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

diff --git a/src/db/sysdb.c b/src/db/sysdb.c
index 6f0b1b9e9b52bede68f03cb5674f65b91cc28c98..a76e8b47afc902d6c0c0ed5302b7f9231a11ade3 100644
--- a/src/db/sysdb.c
+++ b/src/db/sysdb.c
@@ -1821,7 +1821,8 @@ bool sysdb_msg_attrs_modts_differs(struct ldb_message *old_entry,
     return true;
 }
 
-static bool sysdb_ldb_msg_difference(struct ldb_message *db_msg,
+static bool sysdb_ldb_msg_difference(struct ldb_dn *entry_dn,
+                                     struct ldb_message *db_msg,
                                      struct ldb_message *mod_msg)
 {
     struct ldb_message_element *mod_msg_el;
@@ -1848,6 +1849,9 @@ static bool sysdb_ldb_msg_difference(struct ldb_message *db_msg,
                  */
                 if (mod_msg_el->num_values > 0) {
                     /* We can ignore additions of timestamp attributes */
+                    DEBUG(SSSDBG_TRACE_FUNC,
+                          "Entry [%s] differs, reason: attr [%s] is new.\n",
+                          ldb_dn_get_linearized(entry_dn), mod_msg_el->name);
                     return true;
                 }
                 break;
@@ -1861,6 +1865,9 @@ static bool sysdb_ldb_msg_difference(struct ldb_message *db_msg,
                  */
                 if (is_ts_cache_attr(mod_msg_el->name) == false) {
                     /* We can ignore changes to timestamp attributes */
+                    DEBUG(SSSDBG_TRACE_FUNC,
+                          "Entry [%s] differs, reason: attr [%s] is replaced or extended.\n",
+                          ldb_dn_get_linearized(entry_dn), mod_msg_el->name);
                     return true;
                 }
             }
@@ -1869,6 +1876,9 @@ static bool sysdb_ldb_msg_difference(struct ldb_message *db_msg,
             db_msg_el = ldb_msg_find_element(db_msg, mod_msg_el->name);
             if (db_msg_el != NULL) {
                 /* We are deleting a valid element, there is a difference */
+                DEBUG(SSSDBG_TRACE_FUNC,
+                      "Entry [%s] differs, reason: attr [%s] is deleted.\n",
+                      ldb_dn_get_linearized(entry_dn), mod_msg_el->name);
                 return true;
             }
             break;
@@ -1892,10 +1902,16 @@ bool sysdb_entry_attrs_diff(struct sysdb_ctx *sysdb,
     const char *attrnames[attrs->num+1];
 
     if (sysdb->ldb_ts == NULL) {
+        DEBUG(SSSDBG_TRACE_FUNC,
+              "Entry [%s] differs, reason: there is no ts_cache yet.\n",
+              ldb_dn_get_linearized(entry_dn));
         return true;
     }
 
     if (is_ts_ldb_dn(entry_dn) == false) {
+        DEBUG(SSSDBG_TRACE_FUNC,
+              "Entry [%s] differs, reason: ts_cache doesn't trace this type of entry.\n",
+              ldb_dn_get_linearized(entry_dn));
         return true;
     }
 
@@ -1930,7 +1946,7 @@ bool sysdb_entry_attrs_diff(struct sysdb_ctx *sysdb,
         goto done;
     }
 
-    differs = sysdb_ldb_msg_difference(res->msgs[0], new_entry_msg);
+    differs = sysdb_ldb_msg_difference(entry_dn, res->msgs[0], new_entry_msg);
 done:
     talloc_free(tmp_ctx);
     return differs;
-- 
2.7.4

>From 973bab39310120e6e43608413a27c4348a09f6f7 Mon Sep 17 00:00:00 2001
From: Petr Cech <pc...@redhat.com>
Date: Tue, 16 Aug 2016 14:59:06 +0200
Subject: [PATCH 3/7] SYSDB: Adding wrappers for ldb_* operations

This patch adds 4 wrappers:
* sss_ldb_add()
* sss_ldb_delete()
* sss_ldb_modify()
* sss_ldb_rename()

Those wrappers write ldif message to log if
debug_level = SSSDBG_LDB.

Adding and modifying produce full ldif.
Deleting and renaming produce only short message.

If SSSDBG_LDB is not set, wrappers collapse to normal
ldb_* functions without additonial memory consumption.

Resolves:
https://fedorahosted.org/sssd/ticket/3060
---
 Makefile.am                |   2 +
 src/db/sysdb_ldb_wrapper.c | 138 +++++++++++++++++++++++++++++++++++++++++++++
 src/db/sysdb_ldb_wrapper.h |  35 ++++++++++++
 src/util/debug.h           |   1 +
 4 files changed, 176 insertions(+)
 create mode 100644 src/db/sysdb_ldb_wrapper.c
 create mode 100644 src/db/sysdb_ldb_wrapper.h

diff --git a/Makefile.am b/Makefile.am
index f89af5a9d6d26c732574aa3651de8c175f538b28..f9f510e26abaee4cc46c6c65e40180baf3dd2d99 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -644,6 +644,7 @@ dist_noinst_HEADERS = \
     src/db/sysdb_private.h \
     src/db/sysdb_services.h \
     src/db/sysdb_ssh.h \
+    src/db/sysdb_ldb_wrapper.h \
     src/confdb/confdb.h \
     src/confdb/confdb_private.h \
     src/confdb/confdb_setup.h \
@@ -892,6 +893,7 @@ pkglib_LTLIBRARIES += libsss_util.la
 libsss_util_la_SOURCES = \
     src/confdb/confdb.c \
     src/db/sysdb.c \
+    src/db/sysdb_ldb_wrapper.c \
     src/db/sysdb_ops.c \
     src/db/sysdb_search.c \
     src/db/sysdb_selinux.c \
diff --git a/src/db/sysdb_ldb_wrapper.c b/src/db/sysdb_ldb_wrapper.c
new file mode 100644
index 0000000000000000000000000000000000000000..9aa32648987a241088d2701298e7404a76db2d52
--- /dev/null
+++ b/src/db/sysdb_ldb_wrapper.c
@@ -0,0 +1,138 @@
+/*
+   SSSD
+
+   System Database -- ldb wrappers
+
+   Copyright (C) Petr Cech <pc...@redhat.com>	2016
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <string.h>
+#include <ldb.h>
+#include "util/util.h"
+
+struct sss_ldif_vprint_ctx {
+    char *ldif;
+};
+
+static int ldif_vprintf_fn(void *private_data, const char *fmt, ...)
+{
+    struct sss_ldif_vprint_ctx *print_ctx;
+    va_list ap;
+    int lenght = 0;
+
+    /* Note that the function should return the number of
+     * bytes written, or a negative error code.
+     */
+
+    print_ctx = talloc_get_type(private_data, struct sss_ldif_vprint_ctx);
+
+    if (print_ctx == NULL) {
+        return (-1 * ENOMEM);
+    }
+
+    if (fmt != NULL) {
+        va_start(ap, fmt);
+
+        if (print_ctx->ldif != NULL) {
+            lenght = strlen(print_ctx->ldif);
+        }
+
+        print_ctx->ldif = talloc_vasprintf_append_buffer(print_ctx->ldif,
+                                                         fmt, ap);
+        if (print_ctx->ldif == NULL) {
+            return (-1 * ENOENT);
+        }
+
+        lenght = strlen(print_ctx->ldif) - lenght;
+        va_end(ap);
+    }
+
+    return lenght;
+}
+
+static void sss_ldb_ldif2log(enum ldb_changetype changetype,
+                             struct ldb_context *ldb,
+                             const struct ldb_message *message)
+{
+    int ret;
+    struct ldb_ldif ldif;
+    struct sss_ldif_vprint_ctx *ldb_print_ctx;
+
+    ldb_print_ctx = talloc_zero(ldb, struct sss_ldif_vprint_ctx);
+    if (ldb_print_ctx == NULL) {
+        return;
+    }
+    ldb_print_ctx->ldif = NULL;
+
+    ldif.changetype = changetype;
+    ldif.msg = discard_const_p(struct ldb_message, message);
+
+    ret = ldb_ldif_write(ldb, ldif_vprintf_fn, ldb_print_ctx, &ldif);
+    if (ret < 0) {
+        ret = -1 * ret;
+        DEBUG(SSSDBG_MINOR_FAILURE, "ldb_ldif_write() failed with [%d][%s].\n",
+                                    ret, sss_strerror(ret));
+        goto done;
+    }
+
+    DEBUG(SSSDBG_LDB, "ldif\n[\n%s\n]\n", ldb_print_ctx->ldif);
+
+done:
+    talloc_free(ldb_print_ctx->ldif);
+    talloc_free(ldb_print_ctx);
+
+    return;
+}
+
+int sss_ldb_add(struct ldb_context *ldb, const struct ldb_message *message)
+{
+    if (DEBUG_IS_SET(SSSDBG_LDB) == true) {
+        sss_ldb_ldif2log(LDB_CHANGETYPE_ADD, ldb, message);
+    }
+
+    return ldb_add(ldb, message);
+}
+
+int sss_ldb_delete(struct ldb_context *ldb, struct ldb_dn *dn)
+{
+    if (DEBUG_IS_SET(SSSDBG_LDB) == true) {
+        DEBUG(SSSDBG_LDB, "Deleting [%s]\n", ldb_dn_get_rdn_name(dn));
+    }
+
+    return ldb_delete(ldb, dn);
+}
+
+int sss_ldb_modify(struct ldb_context *ldb, const struct ldb_message *message)
+{
+    if (DEBUG_IS_SET(SSSDBG_LDB) == true) {
+        sss_ldb_ldif2log(LDB_CHANGETYPE_MODIFY, ldb, message);
+    }
+
+    return ldb_modify(ldb, message);
+}
+
+int sss_ldb_rename(struct ldb_context *ldb,
+                   struct ldb_dn *olddn,
+                   struct ldb_dn *newdn)
+{
+    if (DEBUG_IS_SET(SSSDBG_LDB) == true) {
+        DEBUG(SSSDBG_LDB, "Renaming [%s] to [%s]\n",
+                          ldb_dn_get_rdn_name(olddn),
+                          ldb_dn_get_rdn_name(newdn));
+    }
+
+    return ldb_rename(ldb, olddn, newdn);
+}
diff --git a/src/db/sysdb_ldb_wrapper.h b/src/db/sysdb_ldb_wrapper.h
new file mode 100644
index 0000000000000000000000000000000000000000..07a42f0f110ded75c4ad5048e23dd13429a449c1
--- /dev/null
+++ b/src/db/sysdb_ldb_wrapper.h
@@ -0,0 +1,35 @@
+/*
+   SSSD
+
+   System Database -- ldb wrappers
+
+   Copyright (C) Petr Cech <pc...@redhat.com>	2016
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __SYSDB_LDB_WRAPPER_H__
+#define __SYSDB_LDB_WRAPPER_H__
+
+int sss_ldb_add(struct ldb_context *ldb, const struct ldb_message *message);
+
+int sss_ldb_delete(struct ldb_context *ldb, struct ldb_dn *dn);
+
+int sss_ldb_modify(struct ldb_context *ldb, const struct ldb_message *message);
+
+int sss_ldb_rename(struct ldb_context *ldb,
+                   struct ldb_dn *olddn,
+                   struct ldb_dn *newdn);
+
+#endif /* __SYSDB_LDB_WRAPPER_H__ */
diff --git a/src/util/debug.h b/src/util/debug.h
index 2a1bd4ffd30817d7128805996c21105fe40982a2..610a65b6b6b9a41c9d7062b118abe5f015e10d68 100644
--- a/src/util/debug.h
+++ b/src/util/debug.h
@@ -67,6 +67,7 @@ int get_fd_from_debug_file(void);
 #define SSSDBG_TRACE_INTERNAL 0x2000   /* level 8 */
 #define SSSDBG_TRACE_ALL      0x4000   /* level 9 */
 #define SSSDBG_BE_FO          0x8000   /* level 9 */
+#define SSSDBG_LDB            0x10000  /* level 9 */
 #define SSSDBG_IMPORTANT_INFO SSSDBG_OP_FAILURE
 
 #define SSSDBG_INVALID        -1
-- 
2.7.4

>From f9834865602ac277957815c28c0a4299ed59f0ce Mon Sep 17 00:00:00 2001
From: Petr Cech <pc...@redhat.com>
Date: Tue, 23 Aug 2016 10:10:33 +0200
Subject: [PATCH 4/7] SYSDB: Replacing ldb_add by sss_ldb_add

Resolves:
https://fedorahosted.org/sssd/ticket/3060
---
 src/confdb/confdb.c           |  3 ++-
 src/confdb/confdb_setup.c     |  5 +++--
 src/db/sysdb.c                |  3 ++-
 src/db/sysdb_autofs.c         |  3 ++-
 src/db/sysdb_gpo.c            |  5 +++--
 src/db/sysdb_idmap.c          |  3 ++-
 src/db/sysdb_init.c           |  9 +++++----
 src/db/sysdb_ops.c            | 13 +++++++------
 src/db/sysdb_ranges.c         |  3 ++-
 src/db/sysdb_selinux.c        |  3 ++-
 src/db/sysdb_services.c       |  3 ++-
 src/db/sysdb_sudo.c           |  3 ++-
 src/db/sysdb_upgrade.c        |  7 ++++---
 src/db/sysdb_views.c          |  5 +++--
 src/responder/secrets/local.c |  5 +++--
 15 files changed, 44 insertions(+), 29 deletions(-)

diff --git a/src/confdb/confdb.c b/src/confdb/confdb.c
index 512d93f434c8298d10899920b648bb286f9b6b15..c1e8da1af288c8b46b67e548e87272d77c4953b2 100644
--- a/src/confdb/confdb.c
+++ b/src/confdb/confdb.c
@@ -27,6 +27,7 @@
 #include "confdb/confdb_private.h"
 #include "util/strtonum.h"
 #include "db/sysdb.h"
+#include "db/sysdb_ldb_wrapper.h"
 
 #define CONFDB_ZERO_CHECK_OR_JUMP(var, ret, err, label) do { \
     if (!var) { \
@@ -168,7 +169,7 @@ int confdb_add_param(struct confdb_ctx *cdb,
             }
         }
 
-        ret = ldb_add(cdb->ldb, msg);
+        ret = sss_ldb_add(cdb->ldb, msg);
         if (ret != LDB_SUCCESS) {
             ret = EIO;
             goto done;
diff --git a/src/confdb/confdb_setup.c b/src/confdb/confdb_setup.c
index d6feab9000d54d2c3761de6d8e990053ade7e85f..3404acd43bac77d26861242aa29f03145abe788d 100644
--- a/src/confdb/confdb_setup.c
+++ b/src/confdb/confdb_setup.c
@@ -24,6 +24,7 @@
 #include <unistd.h>
 #include "util/util.h"
 #include "db/sysdb.h"
+#include "db/sysdb_ldb_wrapper.h"
 #include "confdb.h"
 #include "confdb_private.h"
 #include "confdb_setup.h"
@@ -115,7 +116,7 @@ static int confdb_create_base(struct confdb_ctx *cdb)
     const char *base_ldif = CONFDB_BASE_LDIF;
 
     while ((ldif = ldb_ldif_read_string(cdb->ldb, &base_ldif))) {
-        ret = ldb_add(cdb->ldb, ldif->msg);
+        ret = sss_ldb_add(cdb->ldb, ldif->msg);
         if (ret != LDB_SUCCESS) {
             DEBUG(SSSDBG_FATAL_FAILURE,
                   "Failed to initialize DB (%d,[%s]), aborting!\n",
@@ -305,7 +306,7 @@ static int confdb_init_db(const char *config_file, const char *config_dir,
     DEBUG(SSSDBG_TRACE_LIBS, "LDIF file to import: \n%s\n", config_ldif);
 
     while ((ldif = ldb_ldif_read_string(cdb->ldb, &config_ldif))) {
-        ret = ldb_add(cdb->ldb, ldif->msg);
+        ret = sss_ldb_add(cdb->ldb, ldif->msg);
         if (ret != LDB_SUCCESS) {
             DEBUG(SSSDBG_FATAL_FAILURE,
                     "Failed to initialize DB (%d,[%s]), aborting!\n",
diff --git a/src/db/sysdb.c b/src/db/sysdb.c
index a76e8b47afc902d6c0c0ed5302b7f9231a11ade3..0f490bc301a1a3c34769954dc90a1f901c4b0250 100644
--- a/src/db/sysdb.c
+++ b/src/db/sysdb.c
@@ -24,6 +24,7 @@
 #include "util/strtonum.h"
 #include "util/sss_utf8.h"
 #include "util/crypto/sss_crypto.h"
+#include "db/sysdb_ldb_wrapper.h"
 #include "db/sysdb_private.h"
 #include "confdb/confdb.h"
 #include "util/probes.h"
@@ -1162,7 +1163,7 @@ errno_t sysdb_set_bool(struct sysdb_ctx *sysdb,
     if (res->count) {
         lret = ldb_modify(sysdb->ldb, msg);
     } else {
-        lret = ldb_add(sysdb->ldb, msg);
+        lret = sss_ldb_add(sysdb->ldb, msg);
     }
 
     if (lret != LDB_SUCCESS) {
diff --git a/src/db/sysdb_autofs.c b/src/db/sysdb_autofs.c
index b3e9b4ec83b66ec65a72ab7a3180106e2293d8a5..61ab7cf9efcc0edacd6652b77f45a1e4346e9f8e 100644
--- a/src/db/sysdb_autofs.c
+++ b/src/db/sysdb_autofs.c
@@ -21,6 +21,7 @@
 #include <talloc.h>
 
 #include "db/sysdb.h"
+#include "db/sysdb_ldb_wrapper.h"
 #include "db/sysdb_private.h"
 #include "db/sysdb_autofs.h"
 
@@ -323,7 +324,7 @@ sysdb_save_autofsentry(struct sss_domain_info *domain,
     msg->elements = attrs->a;
     msg->num_elements = attrs->num;
 
-    ret = ldb_add(domain->sysdb->ldb, msg);
+    ret = sss_ldb_add(domain->sysdb->ldb, msg);
     ret = sysdb_error_to_errno(ret);
 done:
     talloc_free(tmp_ctx);
diff --git a/src/db/sysdb_gpo.c b/src/db/sysdb_gpo.c
index e5af91bd8efd1f953326f8069c5c620ca3692017..170d7b7489704a7e74dea27c3b9c0ce1c1870c1d 100644
--- a/src/db/sysdb_gpo.c
+++ b/src/db/sysdb_gpo.c
@@ -22,6 +22,7 @@
 
 
 #include "db/sysdb.h"
+#include "db/sysdb_ldb_wrapper.h"
 #include "db/sysdb_private.h"
 
 static struct ldb_dn *
@@ -161,7 +162,7 @@ sysdb_gpo_store_gpo(struct sss_domain_info *domain,
             goto done;
         }
 
-        lret = ldb_add(domain->sysdb->ldb, update_msg);
+        lret = sss_ldb_add(domain->sysdb->ldb, update_msg);
         if (lret != LDB_SUCCESS) {
             DEBUG(SSSDBG_MINOR_FAILURE,
                   "Failed to add GPO: [%s]\n",
@@ -457,7 +458,7 @@ sysdb_gpo_store_gpo_result_setting(struct sss_domain_info *domain,
             }
         }
 
-        lret = ldb_add(domain->sysdb->ldb, update_msg);
+        lret = sss_ldb_add(domain->sysdb->ldb, update_msg);
         if (lret != LDB_SUCCESS) {
             DEBUG(SSSDBG_MINOR_FAILURE,
                   "Failed to add GPO Result: [%s]\n",
diff --git a/src/db/sysdb_idmap.c b/src/db/sysdb_idmap.c
index 2aa00ef83f182a77b0e9b94ba8a80ef71af6518c..f0186760e08470f07f73d4c3563a0097368bb8d6 100644
--- a/src/db/sysdb_idmap.c
+++ b/src/db/sysdb_idmap.c
@@ -22,6 +22,7 @@
 
 
 #include "db/sysdb.h"
+#include "db/sysdb_ldb_wrapper.h"
 #include "db/sysdb_private.h"
 
 static struct ldb_dn *
@@ -166,7 +167,7 @@ sysdb_idmap_store_mapping(struct sss_domain_info *domain,
             goto done;
         }
 
-        lret = ldb_add(domain->sysdb->ldb, update_msg);
+        lret = sss_ldb_add(domain->sysdb->ldb, update_msg);
         if (lret != LDB_SUCCESS) {
             DEBUG(SSSDBG_MINOR_FAILURE,
                   "Failed to add mapping: [%s]\n",
diff --git a/src/db/sysdb_init.c b/src/db/sysdb_init.c
index 538ba027cd94e274ba328d398cc565b11ea56f39..81cdd0f0f0428b6c3a1884530a1c846606812958 100644
--- a/src/db/sysdb_init.c
+++ b/src/db/sysdb_init.c
@@ -23,6 +23,7 @@
 #include "util/util.h"
 #include "util/strtonum.h"
 #include "util/sss_utf8.h"
+#include "db/sysdb_ldb_wrapper.h"
 #include "db/sysdb_private.h"
 #include "confdb/confdb.h"
 #include "util/probes.h"
@@ -192,7 +193,7 @@ static errno_t sysdb_domain_create_int(struct ldb_context *ldb,
         goto done;
     }
     /* do a synchronous add */
-    ret = ldb_add(ldb, msg);
+    ret = sss_ldb_add(ldb, msg);
     if (ret != LDB_SUCCESS) {
         DEBUG(SSSDBG_FATAL_FAILURE, "Failed to initialize DB (%d, [%s]) "
                                      "for domain %s!\n",
@@ -222,7 +223,7 @@ static errno_t sysdb_domain_create_int(struct ldb_context *ldb,
         goto done;
     }
     /* do a synchronous add */
-    ret = ldb_add(ldb, msg);
+    ret = sss_ldb_add(ldb, msg);
     if (ret != LDB_SUCCESS) {
         DEBUG(SSSDBG_FATAL_FAILURE, "Failed to initialize DB (%d, [%s]) "
                                      "for domain %s!\n",
@@ -252,7 +253,7 @@ static errno_t sysdb_domain_create_int(struct ldb_context *ldb,
         goto done;
     }
     /* do a synchronous add */
-    ret = ldb_add(ldb, msg);
+    ret = sss_ldb_add(ldb, msg);
     if (ret != LDB_SUCCESS) {
         DEBUG(SSSDBG_FATAL_FAILURE, "Failed to initialize DB (%d, [%s]) for "
                                      "domain %s!\n",
@@ -319,7 +320,7 @@ static errno_t sysdb_cache_add_base_ldif(struct ldb_context *ldb,
     struct ldb_ldif *ldif;
 
     while ((ldif = ldb_ldif_read_string(ldb, &base_ldif))) {
-        ret = ldb_add(ldb, ldif->msg);
+        ret = sss_ldb_add(ldb, ldif->msg);
         if (ret != LDB_SUCCESS) {
             DEBUG(SSSDBG_FATAL_FAILURE,
                   "Failed to initialize DB (%d, [%s]) for domain %s!\n",
diff --git a/src/db/sysdb_ops.c b/src/db/sysdb_ops.c
index 847b663bdb2ec31de3eb3b4c33e2b942145a4c42..01cf9c2b5829638023e41a3a058b4609c90e4698 100644
--- a/src/db/sysdb_ops.c
+++ b/src/db/sysdb_ops.c
@@ -20,6 +20,7 @@
 */
 
 #include "util/util.h"
+#include "db/sysdb_ldb_wrapper.h"
 #include "db/sysdb_private.h"
 #include "db/sysdb_services.h"
 #include "db/sysdb_autofs.h"
@@ -846,10 +847,10 @@ static errno_t sysdb_create_ts_entry(struct sysdb_ctx *sysdb,
         goto done;
     }
 
-    lret = ldb_add(sysdb->ldb_ts, msg);
+    lret = sss_ldb_add(sysdb->ldb_ts, msg);
     if (lret != LDB_SUCCESS) {
         DEBUG(SSSDBG_OP_FAILURE,
-              "ldb_add failed: [%s](%d)[%s]\n",
+              "sss_ldb_add failed: [%s](%d)[%s]\n",
               ldb_strerror(lret), lret, ldb_errstring(sysdb->ldb_ts));
     }
 
@@ -1626,7 +1627,7 @@ int sysdb_add_basic_user(struct sss_domain_info *domain,
     ret = sysdb_add_ulong(msg, SYSDB_CREATE_TIME, (unsigned long)time(NULL));
     if (ret) goto done;
 
-    ret = ldb_add(domain->sysdb->ldb, msg);
+    ret = sss_ldb_add(domain->sysdb->ldb, msg);
     ret = sysdb_error_to_errno(ret);
 
 done:
@@ -2023,7 +2024,7 @@ int sysdb_add_basic_group(struct sss_domain_info *domain,
     ret = sysdb_add_ulong(msg, SYSDB_CREATE_TIME, (unsigned long)time(NULL));
     if (ret) goto done;
 
-    ret = ldb_add(domain->sysdb->ldb, msg);
+    ret = sss_ldb_add(domain->sysdb->ldb, msg);
     ret = sysdb_error_to_errno(ret);
 
 done:
@@ -2351,7 +2352,7 @@ int sysdb_add_basic_netgroup(struct sss_domain_info *domain,
     ret = sysdb_add_ulong(msg, SYSDB_CREATE_TIME, (unsigned long) time(NULL));
     if (ret) goto done;
 
-    ret = ldb_add(domain->sysdb->ldb, msg);
+    ret = sss_ldb_add(domain->sysdb->ldb, msg);
     ret = sysdb_error_to_errno(ret);
 
 done:
@@ -3232,7 +3233,7 @@ int sysdb_store_custom(struct sss_domain_info *domain,
     msg->num_elements = attrs->num;
 
     if (add_object) {
-        ret = ldb_add(domain->sysdb->ldb, msg);
+        ret = sss_ldb_add(domain->sysdb->ldb, msg);
     } else {
         ret = ldb_modify(domain->sysdb->ldb, msg);
     }
diff --git a/src/db/sysdb_ranges.c b/src/db/sysdb_ranges.c
index 511e4785d9aa68b2a33b440e1c5ee62e5ccf7ce4..6aa7182387af2604ac4eadcc60516c6b078b0bda 100644
--- a/src/db/sysdb_ranges.c
+++ b/src/db/sysdb_ranges.c
@@ -20,6 +20,7 @@
 */
 
 #include "util/util.h"
+#include "db/sysdb_ldb_wrapper.h"
 #include "db/sysdb_private.h"
 
 static errno_t find_attr_as_uint32_t(const struct ldb_message *msg,
@@ -239,7 +240,7 @@ errno_t sysdb_range_create(struct sysdb_ctx *sysdb, struct range_info *range)
     ret = sysdb_add_string(msg, SYSDB_ID_RANGE_TYPE, range->range_type);
     if (ret) goto done;
 
-    ret = ldb_add(sysdb->ldb, msg);
+    ret = sss_ldb_add(sysdb->ldb, msg);
     if (ret) goto done;
 
     ret = sysdb_error_to_errno(ret);
diff --git a/src/db/sysdb_selinux.c b/src/db/sysdb_selinux.c
index 2dbbb75b99acff28d1a92e1a2d2ccc22004188cc..0321aa2c48e98fb3c38f01dca781fa91952e3ac9 100644
--- a/src/db/sysdb_selinux.c
+++ b/src/db/sysdb_selinux.c
@@ -21,6 +21,7 @@
 
 #include "util/sss_selinux.h"
 #include "db/sysdb_selinux.h"
+#include "db/sysdb_ldb_wrapper.h"
 #include "db/sysdb_private.h"
 
 /* Some generic routines */
@@ -69,7 +70,7 @@ sysdb_add_selinux_entity(struct sysdb_ctx *sysdb,
     msg->elements = attrs->a;
     msg->num_elements = attrs->num;
 
-    ret = ldb_add(sysdb->ldb, msg);
+    ret = sss_ldb_add(sysdb->ldb, msg);
     ret = sysdb_error_to_errno(ret);
 
 done:
diff --git a/src/db/sysdb_services.c b/src/db/sysdb_services.c
index 8118fef0004eefa8a65d130a3562a780cc85f372..751f1b12f88f7e38ed250793f867afe8f5f8df09 100644
--- a/src/db/sysdb_services.c
+++ b/src/db/sysdb_services.c
@@ -23,6 +23,7 @@
 
 #include "util/util.h"
 #include "db/sysdb.h"
+#include "db/sysdb_ldb_wrapper.h"
 #include "db/sysdb_private.h"
 #include "db/sysdb_services.h"
 
@@ -508,7 +509,7 @@ sysdb_svc_add(TALLOC_CTX *mem_ctx,
     ret = sysdb_add_ulong(msg, SYSDB_CREATE_TIME, (unsigned long)time(NULL));
     if (ret) goto done;
 
-    lret = ldb_add(domain->sysdb->ldb, msg);
+    lret = sss_ldb_add(domain->sysdb->ldb, msg);
     ret = sysdb_error_to_errno(lret);
 
     if (ret == EOK && dn) {
diff --git a/src/db/sysdb_sudo.c b/src/db/sysdb_sudo.c
index 601fb63f236a7ed9eede130fd8cf4c3a1559fc4b..b080ddd71e6a3380a50f8b11efcc47fc28ea8677 100644
--- a/src/db/sysdb_sudo.c
+++ b/src/db/sysdb_sudo.c
@@ -24,6 +24,7 @@
 #include <time.h>
 
 #include "db/sysdb.h"
+#include "db/sysdb_ldb_wrapper.h"
 #include "db/sysdb_private.h"
 #include "db/sysdb_sudo.h"
 
@@ -547,7 +548,7 @@ static errno_t sysdb_sudo_set_refresh_time(struct sss_domain_info *domain,
     if (res->count) {
         lret = ldb_modify(domain->sysdb->ldb, msg);
     } else {
-        lret = ldb_add(domain->sysdb->ldb, msg);
+        lret = sss_ldb_add(domain->sysdb->ldb, msg);
     }
 
     if (lret != LDB_SUCCESS) {
diff --git a/src/db/sysdb_upgrade.c b/src/db/sysdb_upgrade.c
index 4ca8433f9d5430b038f90563c34cede02393b0b0..83d1a531fbf5c93ab6c5db126b20509791b47a95 100644
--- a/src/db/sysdb_upgrade.c
+++ b/src/db/sysdb_upgrade.c
@@ -23,6 +23,7 @@
 */
 
 #include "util/util.h"
+#include "db/sysdb_ldb_wrapper.h"
 #include "db/sysdb_private.h"
 #include "db/sysdb_autofs.h"
 
@@ -489,7 +490,7 @@ int sysdb_check_upgrade_02(struct sss_domain_info *domains,
                 goto done;
             }
 
-            ret = ldb_add(sysdb->ldb, msg);
+            ret = sss_ldb_add(sysdb->ldb, msg);
             if (ret != LDB_SUCCESS) {
                 DEBUG(SSSDBG_FATAL_FAILURE, "WARNING: Could not add entry %s,"
                           " to new ldb file! (%d [%s])\n",
@@ -715,7 +716,7 @@ int sysdb_upgrade_04(struct sysdb_ctx *sysdb, const char **ver)
         goto done;
     }
 
-    ret = ldb_add(sysdb->ldb, msg);
+    ret = sss_ldb_add(sysdb->ldb, msg);
     if (ret != LDB_SUCCESS) {
         ret = sysdb_error_to_errno(ret);
         goto done;
@@ -1471,7 +1472,7 @@ int sysdb_upgrade_14(struct sysdb_ctx *sysdb, const char **ver)
         goto done;
     }
     /* do a synchronous add */
-    ret = ldb_add(sysdb->ldb, msg);
+    ret = sss_ldb_add(sysdb->ldb, msg);
     if (ret != LDB_SUCCESS) {
         DEBUG(SSSDBG_FATAL_FAILURE,
               "Failed to upgrade DB (%d, [%s])!\n",
diff --git a/src/db/sysdb_views.c b/src/db/sysdb_views.c
index 9dc48f5b6c414bbc7c64bcd1fe73553f388588bd..a079ffc872510e6168137ce33c0c21d9f8fd70e5 100644
--- a/src/db/sysdb_views.c
+++ b/src/db/sysdb_views.c
@@ -21,6 +21,7 @@
 
 #include "util/util.h"
 #include "util/cert.h"
+#include "db/sysdb_ldb_wrapper.h"
 #include "db/sysdb_private.h"
 
 /* In general is should not be possible that there is a view container without
@@ -163,7 +164,7 @@ errno_t sysdb_update_view_name(struct sysdb_ctx *sysdb,
     if (view_container_exists) {
         ret = ldb_modify(sysdb->ldb, msg);
     } else {
-        ret = ldb_add(sysdb->ldb, msg);
+        ret = sss_ldb_add(sysdb->ldb, msg);
     }
     if (ret != LDB_SUCCESS) {
         DEBUG(SSSDBG_FATAL_FAILURE,
@@ -568,7 +569,7 @@ errno_t sysdb_store_override(struct sss_domain_info *domain,
             goto done;
         }
 
-        ret = ldb_add(domain->sysdb->ldb, msg);
+        ret = sss_ldb_add(domain->sysdb->ldb, msg);
         if (ret != LDB_SUCCESS) {
             DEBUG(SSSDBG_CRIT_FAILURE,
                   "Failed to store override entry: %s(%d)[%s]\n",
diff --git a/src/responder/secrets/local.c b/src/responder/secrets/local.c
index ac3049b62fa77f69d44ec5792139fe3378afb3f4..69244099ce78bdd6227422cf62c2744d8c09fa90 100644
--- a/src/responder/secrets/local.c
+++ b/src/responder/secrets/local.c
@@ -21,6 +21,7 @@
 
 #include "responder/secrets/secsrv_private.h"
 #include "util/crypto/sss_crypto.h"
+#include "db/sysdb_ldb_wrapper.h"
 #include <time.h>
 #include <ldb.h>
 
@@ -353,7 +354,7 @@ int local_db_put_simple(TALLOC_CTX *mem_ctx,
     ret = ldb_msg_add_fmt(msg, "creationTime", "%lu", time(NULL));
     if (ret != EOK) goto done;
 
-    ret = ldb_add(lctx->ldb, msg);
+    ret = sss_ldb_add(lctx->ldb, msg);
     if (ret != EOK) {
         if (ret == LDB_ERR_ENTRY_ALREADY_EXISTS) ret = EEXIST;
         else ret = EIO;
@@ -407,7 +408,7 @@ int local_db_create(TALLOC_CTX *mem_ctx,
     ret = ldb_msg_add_fmt(msg, "creationTime", "%lu", time(NULL));
     if (ret != EOK) goto done;
 
-    ret = ldb_add(lctx->ldb, msg);
+    ret = sss_ldb_add(lctx->ldb, msg);
     if (ret != EOK) {
         if (ret == LDB_ERR_ENTRY_ALREADY_EXISTS) ret = EEXIST;
         else ret = EIO;
-- 
2.7.4

>From 274066b303318392a0db87f60ddedefb308f5b31 Mon Sep 17 00:00:00 2001
From: Petr Cech <pc...@redhat.com>
Date: Tue, 23 Aug 2016 10:15:02 +0200
Subject: [PATCH 5/7] SYSDB: Replacing ldb_delete by sss_ldb_delete

Resolves:
https://fedorahosted.org/sssd/ticket/3060
---
 src/confdb/confdb_setup.c     |  2 +-
 src/db/sysdb_ops.c            |  4 ++--
 src/db/sysdb_upgrade.c        | 18 +++++++++---------
 src/db/sysdb_views.c          |  4 ++--
 src/responder/secrets/local.c |  2 +-
 5 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/src/confdb/confdb_setup.c b/src/confdb/confdb_setup.c
index 3404acd43bac77d26861242aa29f03145abe788d..78d497c7e29ebb737c917c8857d6d6f31b4b2086 100644
--- a/src/confdb/confdb_setup.c
+++ b/src/confdb/confdb_setup.c
@@ -96,7 +96,7 @@ static int confdb_purge(struct confdb_ctx *cdb)
 
     for(i=0; i<res->count; i++) {
         /* Delete this DN */
-        ret = ldb_delete(cdb->ldb, res->msgs[i]->dn);
+        ret = sss_ldb_delete(cdb->ldb, res->msgs[i]->dn);
         if (ret != LDB_SUCCESS) {
             ret = sysdb_error_to_errno(ret);
             goto done;
diff --git a/src/db/sysdb_ops.c b/src/db/sysdb_ops.c
index 01cf9c2b5829638023e41a3a058b4609c90e4698..98089dc3eb5dc21292441ba159b97d3f73e90278 100644
--- a/src/db/sysdb_ops.c
+++ b/src/db/sysdb_ops.c
@@ -109,7 +109,7 @@ static int sysdb_delete_cache_entry(struct ldb_context *ldb,
 {
     int ret;
 
-    ret = ldb_delete(ldb, dn);
+    ret = sss_ldb_delete(ldb, dn);
     switch (ret) {
     case LDB_SUCCESS:
         return EOK;
@@ -3281,7 +3281,7 @@ int sysdb_delete_custom(struct sss_domain_info *domain,
         goto done;
     }
 
-    ret = ldb_delete(domain->sysdb->ldb, dn);
+    ret = sss_ldb_delete(domain->sysdb->ldb, dn);
 
     switch (ret) {
     case LDB_SUCCESS:
diff --git a/src/db/sysdb_upgrade.c b/src/db/sysdb_upgrade.c
index 83d1a531fbf5c93ab6c5db126b20509791b47a95..ee90b2cda7715f778b2e4de99dff7a29b085d861 100644
--- a/src/db/sysdb_upgrade.c
+++ b/src/db/sysdb_upgrade.c
@@ -498,7 +498,7 @@ int sysdb_check_upgrade_02(struct sss_domain_info *domains,
                           ret, ldb_errstring(sysdb->ldb));
             }
 
-            ret = ldb_delete(ldb, orig_dn);
+            ret = sss_ldb_delete(ldb, orig_dn);
             if (ret != LDB_SUCCESS) {
                 DEBUG(SSSDBG_FATAL_FAILURE,
                       "WARNING: Could not remove entry %s,"
@@ -511,21 +511,21 @@ int sysdb_check_upgrade_02(struct sss_domain_info *domains,
         /* now remove the basic containers from local */
         /* these were optional so debug at level 9 in case
          * of failure just for tracing */
-        ret = ldb_delete(ldb, groups_dn);
+        ret = sss_ldb_delete(ldb, groups_dn);
         if (ret != LDB_SUCCESS) {
             DEBUG(SSSDBG_TRACE_ALL, "WARNING: Could not remove entry %s,"
                       " from old ldb file! (%d [%s])\n",
                       ldb_dn_get_linearized(groups_dn),
                       ret, ldb_errstring(ldb));
         }
-        ret = ldb_delete(ldb, users_dn);
+        ret = sss_ldb_delete(ldb, users_dn);
         if (ret != LDB_SUCCESS) {
             DEBUG(SSSDBG_TRACE_ALL, "WARNING: Could not remove entry %s,"
                       " from old ldb file! (%d [%s])\n",
                       ldb_dn_get_linearized(users_dn),
                       ret, ldb_errstring(ldb));
         }
-        ret = ldb_delete(ldb, domain_dn);
+        ret = sss_ldb_delete(ldb, domain_dn);
         if (ret != LDB_SUCCESS) {
             DEBUG(SSSDBG_TRACE_ALL, "WARNING: Could not remove entry %s,"
                       " from old ldb file! (%d [%s])\n",
@@ -1167,7 +1167,7 @@ int sysdb_upgrade_10(struct sysdb_ctx *sysdb, struct sss_domain_info *domain,
         DEBUG(SSSDBG_TRACE_FUNC, "Removing fake user [%s]\n",
               ldb_dn_get_linearized(user->dn));
 
-        ret = ldb_delete(sysdb->ldb, user->dn);
+        ret = sss_ldb_delete(sysdb->ldb, user->dn);
         if (ret != LDB_SUCCESS) {
             ret = sysdb_error_to_errno(ret);
             goto done;
@@ -1269,7 +1269,7 @@ int sysdb_upgrade_11(struct sysdb_ctx *sysdb, struct sss_domain_info *domain,
         DEBUG(SSSDBG_TRACE_LIBS, "Deleting [%s]\n",
               ldb_dn_get_linearized(entry->dn));
 
-        ret = ldb_delete(sysdb->ldb, entry->dn);
+        ret = sss_ldb_delete(sysdb->ldb, entry->dn);
         if (ret != EOK) {
             DEBUG(SSSDBG_OP_FAILURE, "Cannot delete old autofs entry %s\n",
                   ldb_dn_get_linearized(entry->dn));
@@ -1408,7 +1408,7 @@ int sysdb_upgrade_13(struct sysdb_ctx *sysdb, const char **ver)
                 /* Do not remove subdomain containers, only their contents */
                 continue;
             }
-            ret = ldb_delete(sysdb->ldb, res->msgs[j]->dn);
+            ret = sss_ldb_delete(sysdb->ldb, res->msgs[j]->dn);
             if (ret) {
                 DEBUG(SSSDBG_OP_FAILURE,
                       "Failed to delete %s\n",
@@ -1500,7 +1500,7 @@ int sysdb_upgrade_14(struct sysdb_ctx *sysdb, const char **ver)
             DEBUG(SSSDBG_OP_FAILURE,
                   "The object [%s] doesn't have a name\n",
                    ldb_dn_get_linearized(res->msgs[i]->dn));
-            ret = ldb_delete(sysdb->ldb, res->msgs[i]->dn);
+            ret = sss_ldb_delete(sysdb->ldb, res->msgs[i]->dn);
             if (ret) {
                 DEBUG(SSSDBG_OP_FAILURE,
                       "Failed to delete %s\n",
@@ -1525,7 +1525,7 @@ int sysdb_upgrade_14(struct sysdb_ctx *sysdb, const char **ver)
                   "Failed to move [%s] to [%s]\n",
                    ldb_dn_get_linearized(res->msgs[i]->dn),
                    ldb_dn_get_linearized(newdn));
-            ret = ldb_delete(sysdb->ldb, res->msgs[i]->dn);
+            ret = sss_ldb_delete(sysdb->ldb, res->msgs[i]->dn);
             if (ret) {
                 DEBUG(SSSDBG_OP_FAILURE,
                       "Failed to delete %s\n",
diff --git a/src/db/sysdb_views.c b/src/db/sysdb_views.c
index a079ffc872510e6168137ce33c0c21d9f8fd70e5..1c7b6090431f73782ba86ed6c78d71b0615b5c56 100644
--- a/src/db/sysdb_views.c
+++ b/src/db/sysdb_views.c
@@ -481,10 +481,10 @@ errno_t sysdb_store_override(struct sss_domain_info *domain,
     in_transaction = true;
 
     if (has_override) {
-        ret = ldb_delete(domain->sysdb->ldb, override_dn);
+        ret = sss_ldb_delete(domain->sysdb->ldb, override_dn);
         if (ret != EOK) {
             DEBUG(SSSDBG_TRACE_ALL,
-                  "ldb_delete failed, maybe object did not exist. Ignoring.\n");
+                  "sss_ldb_delete failed, maybe object did not exist. Ignoring.\n");
         }
 
         ret = sysdb_attrs_get_string(attrs, SYSDB_NAME, &name_override);
diff --git a/src/responder/secrets/local.c b/src/responder/secrets/local.c
index 69244099ce78bdd6227422cf62c2744d8c09fa90..1c8a2e9294e6f669110329dc91705d6e6103f999 100644
--- a/src/responder/secrets/local.c
+++ b/src/responder/secrets/local.c
@@ -378,7 +378,7 @@ int local_db_delete(TALLOC_CTX *mem_ctx,
     ret = local_db_dn(mem_ctx, lctx->ldb, req_path, &dn);
     if (ret != EOK) return ret;
 
-    ret = ldb_delete(lctx->ldb, dn);
+    ret = sss_ldb_delete(lctx->ldb, dn);
     return sysdb_error_to_errno(ret);
 }
 
-- 
2.7.4

>From ebf71b3860f0f965077dde5e75e151dbf5013a61 Mon Sep 17 00:00:00 2001
From: Petr Cech <pc...@redhat.com>
Date: Tue, 23 Aug 2016 10:27:53 +0200
Subject: [PATCH 6/7] SYSDB: Replacing ldb_modify by sss_ldb_modify

Resolves:
https://fedorahosted.org/sssd/ticket/3060
---
 src/confdb/confdb.c       |  8 ++++----
 src/db/sysdb.c            |  2 +-
 src/db/sysdb_gpo.c        |  4 ++--
 src/db/sysdb_idmap.c      |  2 +-
 src/db/sysdb_ops.c        | 24 ++++++++++++------------
 src/db/sysdb_services.c   |  8 ++++----
 src/db/sysdb_subdomains.c |  5 +++--
 src/db/sysdb_sudo.c       |  2 +-
 src/db/sysdb_upgrade.c    | 26 +++++++++++++-------------
 src/db/sysdb_views.c      | 12 ++++++------
 src/tools/sss_override.c  |  5 +++--
 11 files changed, 50 insertions(+), 48 deletions(-)

diff --git a/src/confdb/confdb.c b/src/confdb/confdb.c
index c1e8da1af288c8b46b67e548e87272d77c4953b2..5c352734e1b0562870c879a44dfd9d3515ca1462 100644
--- a/src/confdb/confdb.c
+++ b/src/confdb/confdb.c
@@ -199,10 +199,10 @@ int confdb_add_param(struct confdb_ctx *cdb,
             }
         }
 
-        ret = ldb_modify(cdb->ldb, msg);
+        ret = sss_ldb_modify(cdb->ldb, msg);
         if (ret != LDB_SUCCESS) {
             DEBUG(SSSDBG_MINOR_FAILURE,
-                  "ldb_modify failed: [%s](%d)[%s]\n",
+                  "sss_ldb_modify failed: [%s](%d)[%s]\n",
                   ldb_strerror(ret), ret, ldb_errstring(cdb->ldb));
             ret = EIO;
             goto done;
@@ -349,10 +349,10 @@ int confdb_set_string(struct confdb_ctx *cdb,
         goto done;
     }
 
-    lret = ldb_modify(cdb->ldb, msg);
+    lret = sss_ldb_modify(cdb->ldb, msg);
     if (lret != LDB_SUCCESS) {
         DEBUG(SSSDBG_MINOR_FAILURE,
-              "ldb_modify failed: [%s](%d)[%s]\n",
+              "sss_ldb_modify failed: [%s](%d)[%s]\n",
               ldb_strerror(lret), lret, ldb_errstring(cdb->ldb));
         ret = EIO;
         goto done;
diff --git a/src/db/sysdb.c b/src/db/sysdb.c
index 0f490bc301a1a3c34769954dc90a1f901c4b0250..06530f30aaadcdfad25d3a4a16d67d13b3fc1044 100644
--- a/src/db/sysdb.c
+++ b/src/db/sysdb.c
@@ -1161,7 +1161,7 @@ errno_t sysdb_set_bool(struct sysdb_ctx *sysdb,
     }
 
     if (res->count) {
-        lret = ldb_modify(sysdb->ldb, msg);
+        lret = sss_ldb_modify(sysdb->ldb, msg);
     } else {
         lret = sss_ldb_add(sysdb->ldb, msg);
     }
diff --git a/src/db/sysdb_gpo.c b/src/db/sysdb_gpo.c
index 170d7b7489704a7e74dea27c3b9c0ce1c1870c1d..20fa1cebed2bf76c2ed649e705e295edcf81094c 100644
--- a/src/db/sysdb_gpo.c
+++ b/src/db/sysdb_gpo.c
@@ -206,7 +206,7 @@ sysdb_gpo_store_gpo(struct sss_domain_info *domain,
             goto done;
         }
 
-        lret = ldb_modify(domain->sysdb->ldb, update_msg);
+        lret = sss_ldb_modify(domain->sysdb->ldb, update_msg);
         if (lret != LDB_SUCCESS) {
             DEBUG(SSSDBG_MINOR_FAILURE,
                   "Failed to modify GPO: [%s](%d)[%s]\n",
@@ -499,7 +499,7 @@ sysdb_gpo_store_gpo_result_setting(struct sss_domain_info *domain,
             }
         }
 
-        lret = ldb_modify(domain->sysdb->ldb, update_msg);
+        lret = sss_ldb_modify(domain->sysdb->ldb, update_msg);
         if (lret != LDB_SUCCESS) {
             DEBUG(SSSDBG_MINOR_FAILURE,
                   "Failed to modify GPO Result: [%s](%d)[%s]\n",
diff --git a/src/db/sysdb_idmap.c b/src/db/sysdb_idmap.c
index f0186760e08470f07f73d4c3563a0097368bb8d6..6ef6efcb379d7a65c3df84b7ab8ff91d6007524f 100644
--- a/src/db/sysdb_idmap.c
+++ b/src/db/sysdb_idmap.c
@@ -245,7 +245,7 @@ sysdb_idmap_store_mapping(struct sss_domain_info *domain,
             }
         }
 
-        lret = ldb_modify(domain->sysdb->ldb, update_msg);
+        lret = sss_ldb_modify(domain->sysdb->ldb, update_msg);
         if (lret != LDB_SUCCESS) {
             DEBUG(SSSDBG_MINOR_FAILURE,
                   "Failed to update mapping: [%s](%d)[%s]\n",
diff --git a/src/db/sysdb_ops.c b/src/db/sysdb_ops.c
index 98089dc3eb5dc21292441ba159b97d3f73e90278..1dc7779a640218a8f29ef1f6e02fecfffbc70efe 100644
--- a/src/db/sysdb_ops.c
+++ b/src/db/sysdb_ops.c
@@ -1163,10 +1163,10 @@ static int sysdb_set_cache_entry_attr(struct ldb_context *ldb,
         goto done;
     }
 
-    lret = ldb_modify(ldb, msg);
+    lret = sss_ldb_modify(ldb, msg);
     if (lret != LDB_SUCCESS) {
         DEBUG(SSSDBG_MINOR_FAILURE,
-              "ldb_modify failed: [%s](%d)[%s]\n",
+              "sss_ldb_modify failed: [%s](%d)[%s]\n",
               ldb_strerror(lret), lret, ldb_errstring(ldb));
     }
 
@@ -1535,10 +1535,10 @@ int sysdb_get_new_id(struct sss_domain_info *domain,
         goto done;
     }
 
-    ret = ldb_modify(domain->sysdb->ldb, msg);
+    ret = sss_ldb_modify(domain->sysdb->ldb, msg);
     if (ret != LDB_SUCCESS) {
         DEBUG(SSSDBG_MINOR_FAILURE,
-              "ldb_modify failed: [%s](%d)[%s]\n",
+              "sss_ldb_modify failed: [%s](%d)[%s]\n",
               ldb_strerror(ret), ret, ldb_errstring(domain->sysdb->ldb));
     }
     ret = sysdb_error_to_errno(ret);
@@ -2302,10 +2302,10 @@ int sysdb_mod_group_member(struct sss_domain_info *domain,
         ERROR_OUT(ret, EINVAL, fail);
     }
 
-    ret = ldb_modify(domain->sysdb->ldb, msg);
+    ret = sss_ldb_modify(domain->sysdb->ldb, msg);
     if (ret != LDB_SUCCESS) {
         DEBUG(SSSDBG_MINOR_FAILURE,
-              "ldb_modify failed: [%s](%d)[%s]\n",
+              "sss_ldb_modify failed: [%s](%d)[%s]\n",
               ldb_strerror(ret), ret, ldb_errstring(domain->sysdb->ldb));
     }
     ret = sysdb_error_to_errno(ret);
@@ -3235,7 +3235,7 @@ int sysdb_store_custom(struct sss_domain_info *domain,
     if (add_object) {
         ret = sss_ldb_add(domain->sysdb->ldb, msg);
     } else {
-        ret = ldb_modify(domain->sysdb->ldb, msg);
+        ret = sss_ldb_modify(domain->sysdb->ldb, msg);
     }
     if (ret != LDB_SUCCESS) {
         DEBUG(SSSDBG_CRIT_FAILURE, "Failed to store custom entry: %s(%d)[%s]\n",
@@ -3584,10 +3584,10 @@ int sysdb_delete_user(struct sss_domain_info *domain,
             ret = sysdb_delete_string(msg, SYSDB_GHOST, name);
             if (ret) goto fail;
 
-            ret = ldb_modify(domain->sysdb->ldb, msg);
+            ret = sss_ldb_modify(domain->sysdb->ldb, msg);
             if (ret != LDB_SUCCESS) {
                 DEBUG(SSSDBG_MINOR_FAILURE,
-                      "ldb_modify failed: [%s](%d)[%s]\n",
+                      "sss_ldb_modify failed: [%s](%d)[%s]\n",
                       ldb_strerror(ret), ret,
                       ldb_errstring(domain->sysdb->ldb));
             }
@@ -4439,10 +4439,10 @@ errno_t sysdb_remove_attrs(struct sss_domain_info *domain,
          * attribute in the sysdb will cause other removals to
          * fail.
          */
-        lret = ldb_modify(domain->sysdb->ldb, msg);
+        lret = sss_ldb_modify(domain->sysdb->ldb, msg);
         if (lret != LDB_SUCCESS && lret != LDB_ERR_NO_SUCH_ATTRIBUTE) {
             DEBUG(SSSDBG_MINOR_FAILURE,
-                  "ldb_modify failed: [%s](%d)[%s]\n",
+                  "sss_ldb_modify failed: [%s](%d)[%s]\n",
                   ldb_strerror(lret), lret, ldb_errstring(domain->sysdb->ldb));
             ret = sysdb_error_to_errno(lret);
             goto done;
@@ -4888,7 +4888,7 @@ errno_t sysdb_mark_entry_as_expired_ldb_dn(struct sss_domain_info *dom,
         goto done;
     }
 
-    ret = ldb_modify(dom->sysdb->ldb, msg);
+    ret = sss_ldb_modify(dom->sysdb->ldb, msg);
     if (ret != LDB_SUCCESS) {
         ret = sysdb_error_to_errno(ret);
         goto done;
diff --git a/src/db/sysdb_services.c b/src/db/sysdb_services.c
index 751f1b12f88f7e38ed250793f867afe8f5f8df09..18df34085a86661b23d3168f50ad99e3e4386e4c 100644
--- a/src/db/sysdb_services.c
+++ b/src/db/sysdb_services.c
@@ -585,10 +585,10 @@ sysdb_svc_update(struct sysdb_ctx *sysdb,
         }
     }
 
-    lret = ldb_modify(sysdb->ldb, msg);
+    lret = sss_ldb_modify(sysdb->ldb, msg);
     if (lret != LDB_SUCCESS) {
         DEBUG(SSSDBG_MINOR_FAILURE,
-              "ldb_modify failed: [%s](%d)[%s]\n",
+              "sss_ldb_modify failed: [%s](%d)[%s]\n",
               ldb_strerror(lret), lret, ldb_errstring(sysdb->ldb));
     }
     ret = sysdb_error_to_errno(lret);
@@ -622,10 +622,10 @@ sysdb_svc_remove_alias(struct sysdb_ctx *sysdb,
     ret = sysdb_delete_string(msg, SYSDB_NAME_ALIAS, alias);
     if (ret != EOK) goto done;
 
-    lret = ldb_modify(sysdb->ldb, msg);
+    lret = sss_ldb_modify(sysdb->ldb, msg);
     if (lret != LDB_SUCCESS) {
         DEBUG(SSSDBG_MINOR_FAILURE,
-              "ldb_modify failed: [%s](%d)[%s]\n",
+              "sss_ldb_modify failed: [%s](%d)[%s]\n",
               ldb_strerror(lret), lret, ldb_errstring(sysdb->ldb));
     }
     ret = sysdb_error_to_errno(lret);
diff --git a/src/db/sysdb_subdomains.c b/src/db/sysdb_subdomains.c
index ff83f914f31d566e050c74a3ef5f5745f8c93add..66dd0546a560688e480e5ec1d2d5cfe50428fa8b 100644
--- a/src/db/sysdb_subdomains.c
+++ b/src/db/sysdb_subdomains.c
@@ -21,6 +21,7 @@
 */
 
 #include "util/util.h"
+#include "db/sysdb_ldb_wrapper.h"
 #include "db/sysdb_private.h"
 
 struct sss_domain_info *new_subdomain(TALLOC_CTX *mem_ctx,
@@ -797,7 +798,7 @@ errno_t sysdb_master_domain_add_info(struct sss_domain_info *domain,
         goto done;
     }
 
-    ret = ldb_modify(domain->sysdb->ldb, msg);
+    ret = sss_ldb_modify(domain->sysdb->ldb, msg);
     if (ret != LDB_SUCCESS) {
         DEBUG(SSSDBG_FATAL_FAILURE, "Failed to add subdomain attributes to "
                                      "[%s]: [%d][%s]!\n", domain->name, ret,
@@ -1098,7 +1099,7 @@ errno_t sysdb_subdomain_store(struct sysdb_ctx *sysdb,
         }
     }
 
-    ret = ldb_modify(sysdb->ldb, msg);
+    ret = sss_ldb_modify(sysdb->ldb, msg);
     if (ret != LDB_SUCCESS) {
         DEBUG(SSSDBG_FATAL_FAILURE, "Failed to add subdomain attributes to "
                                      "[%s]: [%d][%s]!\n", name, ret,
diff --git a/src/db/sysdb_sudo.c b/src/db/sysdb_sudo.c
index b080ddd71e6a3380a50f8b11efcc47fc28ea8677..f5cb91691242294de8d7168fc39637e68ef040b6 100644
--- a/src/db/sysdb_sudo.c
+++ b/src/db/sysdb_sudo.c
@@ -546,7 +546,7 @@ static errno_t sysdb_sudo_set_refresh_time(struct sss_domain_info *domain,
     }
 
     if (res->count) {
-        lret = ldb_modify(domain->sysdb->ldb, msg);
+        lret = sss_ldb_modify(domain->sysdb->ldb, msg);
     } else {
         lret = sss_ldb_add(domain->sysdb->ldb, msg);
     }
diff --git a/src/db/sysdb_upgrade.c b/src/db/sysdb_upgrade.c
index ee90b2cda7715f778b2e4de99dff7a29b085d861..5d3dcc1d1c8d441085aebbd86a0b5749c59e4f75 100644
--- a/src/db/sysdb_upgrade.c
+++ b/src/db/sysdb_upgrade.c
@@ -93,7 +93,7 @@ static errno_t update_version(struct upgrade_ctx *ctx)
         goto done;
     }
 
-    ret = ldb_modify(ctx->ldb, msg);
+    ret = sss_ldb_modify(ctx->ldb, msg);
     if (ret != LDB_SUCCESS) {
         ret = sysdb_error_to_errno(ret);
         goto done;
@@ -243,7 +243,7 @@ int sysdb_upgrade_01(struct ldb_context *ldb, const char **ver)
         }
 
         /* ok now we are ready to modify the entry */
-        ret = ldb_modify(ldb, msg);
+        ret = sss_ldb_modify(ldb, msg);
         if (ret != LDB_SUCCESS) {
             ret = sysdb_error_to_errno(ret);
             goto done;
@@ -571,7 +571,7 @@ int sysdb_check_upgrade_02(struct sss_domain_info *domains,
         goto done;
     }
 
-    ret = ldb_modify(ldb, msg);
+    ret = sss_ldb_modify(ldb, msg);
     if (ret != LDB_SUCCESS) {
         ret = sysdb_error_to_errno(ret);
         goto done;
@@ -643,7 +643,7 @@ int sysdb_upgrade_03(struct sysdb_ctx *sysdb, const char **ver)
         goto done;
     }
 
-    ret = ldb_modify(sysdb->ldb, msg);
+    ret = sss_ldb_modify(sysdb->ldb, msg);
     if (ret != LDB_SUCCESS) {
         ret = sysdb_error_to_errno(ret);
         goto done;
@@ -698,7 +698,7 @@ int sysdb_upgrade_04(struct sysdb_ctx *sysdb, const char **ver)
         goto done;
     }
 
-    ret = ldb_modify(sysdb->ldb, msg);
+    ret = sss_ldb_modify(sysdb->ldb, msg);
     if (ret != LDB_SUCCESS) {
         ret = sysdb_error_to_errno(ret);
         goto done;
@@ -784,7 +784,7 @@ int sysdb_upgrade_05(struct sysdb_ctx *sysdb, const char **ver)
         goto done;
     }
 
-    ret = ldb_modify(sysdb->ldb, msg);
+    ret = sss_ldb_modify(sysdb->ldb, msg);
     if (ret != LDB_SUCCESS) {
         ret = sysdb_error_to_errno(ret);
         goto done;
@@ -840,7 +840,7 @@ int sysdb_upgrade_06(struct sysdb_ctx *sysdb, const char **ver)
         goto done;
     }
 
-    ret = ldb_modify(sysdb->ldb, msg);
+    ret = sss_ldb_modify(sysdb->ldb, msg);
     if (ret != LDB_SUCCESS) {
         ret = sysdb_error_to_errno(ret);
         goto done;
@@ -896,7 +896,7 @@ int sysdb_upgrade_07(struct sysdb_ctx *sysdb, const char **ver)
         goto done;
     }
 
-    ret = ldb_modify(sysdb->ldb, msg);
+    ret = sss_ldb_modify(sysdb->ldb, msg);
     if (ret != LDB_SUCCESS) {
         ret = sysdb_error_to_errno(ret);
         goto done;
@@ -958,7 +958,7 @@ int sysdb_upgrade_08(struct sysdb_ctx *sysdb, const char **ver)
         goto done;
     }
 
-    ret = ldb_modify(sysdb->ldb, msg);
+    ret = sss_ldb_modify(sysdb->ldb, msg);
     if (ret != LDB_SUCCESS) {
         ret = sysdb_error_to_errno(ret);
         goto done;
@@ -1015,7 +1015,7 @@ int sysdb_upgrade_09(struct sysdb_ctx *sysdb, const char **ver)
         goto done;
     }
 
-    ret = ldb_modify(sysdb->ldb, msg);
+    ret = sss_ldb_modify(sysdb->ldb, msg);
     if (ret != LDB_SUCCESS) {
         ret = sysdb_error_to_errno(ret);
         goto done;
@@ -1328,7 +1328,7 @@ int sysdb_upgrade_12(struct sysdb_ctx *sysdb, const char **ver)
         goto done;
     }
 
-    ret = ldb_modify(sysdb->ldb, msg);
+    ret = sss_ldb_modify(sysdb->ldb, msg);
     if (ret != LDB_SUCCESS) {
         ret = sysdb_error_to_errno(ret);
         goto done;
@@ -1586,7 +1586,7 @@ int sysdb_upgrade_15(struct sysdb_ctx *sysdb, const char **ver)
         goto done;
     }
 
-    ret = ldb_modify(sysdb->ldb, msg);
+    ret = sss_ldb_modify(sysdb->ldb, msg);
     if (ret != LDB_SUCCESS) {
         ret = sysdb_error_to_errno(ret);
         goto done;
@@ -1637,7 +1637,7 @@ int sysdb_upgrade_16(struct sysdb_ctx *sysdb, const char **ver)
         goto done;
     }
 
-    ret = ldb_modify(sysdb->ldb, msg);
+    ret = sss_ldb_modify(sysdb->ldb, msg);
     if (ret != LDB_SUCCESS) {
         ret = sysdb_error_to_errno(ret);
         goto done;
diff --git a/src/db/sysdb_views.c b/src/db/sysdb_views.c
index 1c7b6090431f73782ba86ed6c78d71b0615b5c56..5165ea6985b9c07b5a1c403798f2283e4aca2abd 100644
--- a/src/db/sysdb_views.c
+++ b/src/db/sysdb_views.c
@@ -162,7 +162,7 @@ errno_t sysdb_update_view_name(struct sysdb_ctx *sysdb,
     }
 
     if (view_container_exists) {
-        ret = ldb_modify(sysdb->ldb, msg);
+        ret = sss_ldb_modify(sysdb->ldb, msg);
     } else {
         ret = sss_ldb_add(sysdb->ldb, msg);
     }
@@ -284,10 +284,10 @@ errno_t sysdb_invalidate_overrides(struct sysdb_ctx *sysdb)
     for (c = 0; c < res->count; c++) {
         msg->dn = res->msgs[c]->dn;
 
-        ret = ldb_modify(sysdb->ldb, msg);
+        ret = sss_ldb_modify(sysdb->ldb, msg);
         if (ret != LDB_SUCCESS && ret != LDB_ERR_NO_SUCH_ATTRIBUTE) {
             DEBUG(SSSDBG_OP_FAILURE,
-                  "ldb_modify failed: [%s](%d)[%s]\n",
+                  "sss_ldb_modify failed: [%s](%d)[%s]\n",
                   ldb_strerror(ret), ret, ldb_errstring(sysdb->ldb));
             ret = sysdb_error_to_errno(ret);
             goto done;
@@ -307,10 +307,10 @@ errno_t sysdb_invalidate_overrides(struct sysdb_ctx *sysdb)
     for (c = 0; c < res->count; c++) {
         msg->dn = res->msgs[c]->dn;
 
-        ret = ldb_modify(sysdb->ldb, msg);
+        ret = sss_ldb_modify(sysdb->ldb, msg);
         if (ret != LDB_SUCCESS && ret != LDB_ERR_NO_SUCH_ATTRIBUTE) {
             DEBUG(SSSDBG_OP_FAILURE,
-                  "ldb_modify failed: [%s](%d)[%s]\n",
+                  "sss_ldb_modify failed: [%s](%d)[%s]\n",
                   ldb_strerror(ret), ret, ldb_errstring(sysdb->ldb));
             ret = sysdb_error_to_errno(ret);
             goto done;
@@ -605,7 +605,7 @@ errno_t sysdb_store_override(struct sss_domain_info *domain,
             goto done;
         }
 
-        ret = ldb_modify(domain->sysdb->ldb, msg);
+        ret = sss_ldb_modify(domain->sysdb->ldb, msg);
         if (ret != LDB_SUCCESS) {
             DEBUG(SSSDBG_CRIT_FAILURE,
                   "Failed to store override DN: %s(%d)[%s]\n",
diff --git a/src/tools/sss_override.c b/src/tools/sss_override.c
index d41da52e69acdb67b5a6d624254e3b89a8aa27b8..645e94710e67223b6ab34d2dff4f8a836df203f9 100644
--- a/src/tools/sss_override.c
+++ b/src/tools/sss_override.c
@@ -23,6 +23,7 @@
 #include "util/util.h"
 #include "util/crypto/sss_crypto.h"
 #include "db/sysdb.h"
+#include "db/sysdb_ldb_wrapper.h"
 #include "tools/common/sss_tools.h"
 #include "tools/common/sss_colondb.h"
 
@@ -940,10 +941,10 @@ static errno_t override_object_del(struct sss_domain_info *domain,
         goto done;
     }
 
-    ret = ldb_modify(ldb, msg);
+    ret = sss_ldb_modify(ldb, msg);
     if (ret != LDB_SUCCESS && ret != LDB_ERR_NO_SUCH_ATTRIBUTE) {
         DEBUG(SSSDBG_OP_FAILURE,
-              "ldb_modify() failed: [%s](%d)[%s]\n",
+              "sss_ldb_modify() failed: [%s](%d)[%s]\n",
               ldb_strerror(ret), ret, ldb_errstring(ldb));
         ret = sysdb_error_to_errno(ret);
         goto done;
-- 
2.7.4

>From d559d6fdb6e9b726c92e82b558b021af253d7a98 Mon Sep 17 00:00:00 2001
From: Petr Cech <pc...@redhat.com>
Date: Tue, 23 Aug 2016 10:30:07 +0200
Subject: [PATCH 7/7] SYSDB: Replacing ldb_rename by sss_ldb_rename

Resolves:
https://fedorahosted.org/sssd/ticket/3060
---
 src/db/sysdb_upgrade.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/db/sysdb_upgrade.c b/src/db/sysdb_upgrade.c
index 5d3dcc1d1c8d441085aebbd86a0b5749c59e4f75..5bb8efdb802633aa3acbd204d39c86c0198a8174 100644
--- a/src/db/sysdb_upgrade.c
+++ b/src/db/sysdb_upgrade.c
@@ -1519,7 +1519,7 @@ int sysdb_upgrade_14(struct sysdb_ctx *sysdb, const char **ver)
             ret = ENOMEM;
             goto done;
         }
-        ret = ldb_rename(sysdb->ldb, res->msgs[i]->dn, newdn);
+        ret = sss_ldb_rename(sysdb->ldb, res->msgs[i]->dn, newdn);
         if (ret != LDB_SUCCESS) {
             DEBUG(SSSDBG_CRIT_FAILURE,
                   "Failed to move [%s] to [%s]\n",
@@ -2020,7 +2020,7 @@ static errno_t qualify_object(TALLOC_CTX *mem_ctx,
             goto done;
         }
 
-        ret = ldb_rename(ldb, object->dn, new_object_dn);
+        ret = sss_ldb_rename(ldb, object->dn, new_object_dn);
         if (ret != LDB_SUCCESS) {
             DEBUG(SSSDBG_OP_FAILURE,
                   "Cannot rename %s to %s\n",
-- 
2.7.4

_______________________________________________
sssd-devel mailing list
sssd-devel@lists.fedorahosted.org
https://lists.fedorahosted.org/admin/lists/sssd-devel@lists.fedorahosted.org

Reply via email to