[SSSD] [PATCH] SYSDB: Return errno, not ldb error code

Lukas Slebodnik lslebodn at redhat.com
Mon Aug 18 06:11:29 UTC 2014


On (17/08/14 20:45), Jakub Hrozek wrote:
>Hi,
>
>for one of my patches I tried to use ldb permissive modification before
>realising it's not the best approach. At least I found this little bug
>in the sysdb code.

>From de9f9376b6d5ed098a268a7a1f5d04bca1c8d96f Mon Sep 17 00:00:00 2001
>From: Jakub Hrozek <jhrozek at redhat.com>
>Date: Sat, 16 Aug 2014 19:41:40 +0200
>Subject: [PATCH] SYSDB: Return errno, not ldb error code
>
>---
> src/db/sysdb_ops.c | 3 +++
> 1 file changed, 3 insertions(+)
>
>diff --git a/src/db/sysdb_ops.c b/src/db/sysdb_ops.c
>index 252097f28b7634d13d91392b63abdf0640bcfa19..f4d48e89c49879ea282c9e7637e8255028e95758 100644
>--- a/src/db/sysdb_ops.c
>+++ b/src/db/sysdb_ops.c
>@@ -159,6 +159,9 @@ int sss_ldb_modify_permissive(struct ldb_context *ldb,
> 
>     talloc_free(req);
> 
>+    if (ret) {
>+        ret = sysdb_error_to_errno(ret);
>+    }
>     return ret;
> }
NACK

Current code expect LDB error codes to be returned from
sss_ldb_modify_permissive. See src/db/sysdb_upgrade.c.
But you can write doxygen comment for this function ;-)

sh$ git grep -A3 sss_ldb_modify_permissive
src/db/sysdb.h:int sss_ldb_modify_permissive(struct ldb_context *ldb,
src/db/sysdb.h-                              struct ldb_message *msg);
src/db/sysdb.h-
src/db/sysdb.h-/* Delete Entry */
--
src/db/sysdb_ops.c:int sss_ldb_modify_permissive(struct ldb_context *ldb,
src/db/sysdb_ops.c-                              struct ldb_message *msg)
src/db/sysdb_ops.c-{
src/db/sysdb_ops.c-    struct ldb_request *req;
--
src/db/sysdb_ops.c:    ret = sss_ldb_modify_permissive(sysdb->ldb, msg);
src/db/sysdb_ops.c-    ret = sysdb_error_to_errno(ret);
src/db/sysdb_ops.c-    if (ret != EOK) {
src/db/sysdb_ops.c-        goto done;
--
src/db/sysdb_upgrade.c:            ret = sss_ldb_modify_permissive(sysdb->ldb, msg);
src/db/sysdb_upgrade.c-            talloc_zfree(msg);
src/db/sysdb_upgrade.c-            if (ret == LDB_ERR_ATTRIBUTE_OR_VALUE_EXISTS) {
src/db/sysdb_upgrade.c-                /* If we failed adding the ghost user(s) because the values already
--
src/db/sysdb_upgrade.c:                ret = sss_ldb_modify_permissive(sysdb->ldb, msg);
src/db/sysdb_upgrade.c-                talloc_zfree(msg);
src/db/sysdb_upgrade.c-                if (ret != LDB_SUCCESS) {
src/db/sysdb_upgrade.c-                    goto done;

LS



More information about the sssd-devel mailing list