ldb:ldbedit tool - fix bug #7914
authorMatthias Dieter Wallnöfer <mdw@samba.org>
Fri, 14 Jan 2011 11:48:54 +0000 (12:48 +0100)
committerMatthias Dieter Wallnöfer <mdw@samba.org>
Wed, 9 Feb 2011 17:59:19 +0000 (18:59 +0100)
"modify_record" returns "-1" when failing, otherwise the number of
modifies performed as an "unsigned int" converted to "int".
When we get "-1" we immediately need to stop (the error message has
already been generated by the function itself).

source4/lib/ldb/tools/ldbedit.c

index 5b8beb662dddf3f5d08c7ba9fcadf26aee9dd319..ecdb4d7f621b855ca45bdd0a0b7f0825028c6feb 100644 (file)
@@ -119,7 +119,7 @@ static int merge_edits(struct ldb_context *ldb,
 {
        unsigned int i;
        struct ldb_message *msg;
-       int ret = 0;
+       int ret;
        unsigned int adds=0, modifies=0, deletes=0;
        struct ldb_control **req_ctrls = ldb_parse_control_strings(ldb, ldb, (const char **)options->controls);
        if (options->controls != NULL && req_ctrls == NULL) {
@@ -148,8 +148,11 @@ static int merge_edits(struct ldb_context *ldb,
                        }
                        adds++;
                } else {
-                       if (modify_record(ldb, msg, msgs2[i], req_ctrls) > 0) {
-                               modifies++;
+                       ret = modify_record(ldb, msg, msgs2[i], req_ctrls);
+                       if (ret != -1) {
+                               modifies += (unsigned int) ret;
+                       } else {
+                               return -1;
                        }
                }
        }
@@ -179,7 +182,7 @@ static int merge_edits(struct ldb_context *ldb,
 
        printf("# %u adds  %u modifies  %u deletes\n", adds, modifies, deletes);
 
-       return ret;
+       return 0;
 }
 
 /*