tdb_traverse/tdb_traverse_read: check returns for negative, not -1.
authorRusty Russell <rusty@rustcorp.com.au>
Mon, 20 Jun 2011 09:10:31 +0000 (18:40 +0930)
committerRusty Russell <rusty@rustcorp.com.au>
Mon, 20 Jun 2011 09:18:35 +0000 (11:18 +0200)
TDB2 returns a negative error number on failure.  This is compatible
if we always check for < 0 instead of == -1.

Also, there's no tdb_traverse_read in TDB2: we don't try to make
traverse reliable any more, so there are no write locks anyway.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
15 files changed:
source3/groupdb/mapping_tdb.c
source3/lib/dbwrap_util.c
source3/lib/gencache.c
source3/lib/tdb_validate.c
source3/printing/nt_printing_tdb.c
source3/registry/reg_backend_db.c
source3/rpc_server/srvsvc/srv_srvsvc_nt.c
source3/smbd/connection.c
source3/smbd/session.c
source3/utils/net_g_lock.c
source3/utils/net_serverid.c
source3/utils/status.c
source3/winbindd/winbindd_cache.c
source4/lib/ldb/ldb_tdb/ldb_index.c
source4/lib/ldb/ldb_tdb/ldb_search.c

index cf8857cda541990cff878745933d5ea41b361999..fc195cb348731853319ec8441d075cf6d240217a 100644 (file)
@@ -960,7 +960,7 @@ static bool mapping_switch(const char *ldb_path)
        /* ldb is just a very fancy tdb, read out raw data and perform
         * conversion */
        ret = tdb_traverse(ltdb, convert_ldb_record, NULL);
-       if (ret == -1) goto failed;
+       if (ret < 0) goto failed;
 
        if (ltdb) {
                tdb_close(ltdb);
index ce5ef5270672c7b3ae4e81cf70a5811078937330..44a1b8827b6971ec1e8c3ba23e422ef2f35bc23d 100644 (file)
@@ -433,7 +433,7 @@ static NTSTATUS dbwrap_trans_traverse_action(struct db_context* db, void* privat
 
        int ret = db->traverse(db, ctx->f, ctx->private_data);
 
-       return (ret == -1) ? NT_STATUS_INTERNAL_DB_CORRUPTION : NT_STATUS_OK;
+       return (ret < 0) ? NT_STATUS_INTERNAL_DB_CORRUPTION : NT_STATUS_OK;
 }
 
 NTSTATUS dbwrap_trans_traverse(struct db_context *db,
@@ -452,7 +452,7 @@ NTSTATUS dbwrap_traverse(struct db_context *db,
                         void *private_data)
 {
        int ret = db->traverse(db, f, private_data);
-       return (ret == -1) ? NT_STATUS_INTERNAL_DB_CORRUPTION : NT_STATUS_OK;
+       return (ret < 0) ? NT_STATUS_INTERNAL_DB_CORRUPTION : NT_STATUS_OK;
 }
 
 
index ab7de21d92913e6c07934e7facd28180b81d345c..d5ca164943d2b78381631c02ce461ceafe0830bc 100644 (file)
@@ -488,7 +488,7 @@ bool gencache_stabilize(void)
        state.written = false;
 
        res = tdb_traverse(cache_notrans, stabilize_fn, &state);
-       if ((res == -1) || state.error) {
+       if ((res < 0) || state.error) {
                tdb_transaction_cancel(cache_notrans);
                tdb_transaction_cancel(cache);
                return false;
index 7dd7dae5ac14b50e6e40447606f784771f017705..210d91eeb042abcce4b3b98eba3fe7dce1983221 100644 (file)
@@ -71,7 +71,7 @@ static int tdb_validate_child(struct tdb_context *tdb,
        num_entries = tdb_traverse(tdb, validate_fn, (void *)&v_status);
        if (!v_status.success) {
                goto out;
-       } else if (num_entries == -1) {
+       } else if (num_entries < 0) {
                v_status.tdb_error = True;
                v_status.success = False;
                goto out;
index 8d8d6f7dc7b9bd412029dff937b01aa15cda5b33..1361f4b3b36a4e32acfded3d1c5d603dc333d883 100644 (file)
@@ -266,7 +266,7 @@ static bool upgrade_to_version_4(void)
 
        talloc_destroy( ctx );
 
-       return ( result != -1 );
+       return ( result >= 0 );
 }
 
 /*******************************************************************
@@ -334,7 +334,7 @@ static bool upgrade_to_version_5(void)
 
        talloc_destroy( ctx );
 
-       return ( result != -1 );
+       return ( result >= 0 );
 }
 
 bool nt_printing_tdb_upgrade(void)
index 05f3a5a0ab7c1f014da1e563be08bb1d34c2d986..812dd0d43cf891d0cf222b0706c1bd0684daf98a 100644 (file)
@@ -482,7 +482,7 @@ static WERROR regdb_upgrade_v1_to_v2(void)
 
        talloc_destroy(mem_ctx);
 
-       if (rc == -1) {
+       if (rc < 0) {
                return WERR_REG_IO_FAILURE;
        }
 
index 64a7264eceb7324325345c9125387adaf9ee3d7f..2aed300febc3054457d0da3a82729b9791ea2066 100644 (file)
@@ -136,7 +136,7 @@ static WERROR net_enum_pipes(TALLOC_CTX *ctx,
        fenum.username = username;
        fenum.ctr3 = *ctr3;
 
-       if (connections_traverse(pipe_enum_fn, &fenum) == -1) {
+       if (connections_traverse(pipe_enum_fn, &fenum) < 0) {
                DEBUG(0,("net_enum_pipes: traverse of connections.tdb "
                         "failed\n"));
                return WERR_NOMEM;
index f1ec301ee2833d010069d0b8288b1aeffe961993..7ed9518756bfebb6c9f590a8d864ed757cd7f3ea 100644 (file)
@@ -120,7 +120,7 @@ int count_current_connections( const char *sharename, bool clear  )
        ret = connections_forall(count_fn, &cs);
        unbecome_root();
 
-       if (ret == -1) {
+       if (ret < 0) {
                DEBUG(0,("count_current_connections: traverse of "
                         "connections.tdb failed\n"));
                return 0;
index 12d4818e90ca8c548c5e2b5572911ea459e1fe82..48afb5389f9ec950a895ca892e82fa73b4d4a07a 100644 (file)
@@ -264,7 +264,7 @@ int list_sessions(TALLOC_CTX *mem_ctx, struct sessionid **session_list)
        sesslist.sessions = NULL;
 
        ret = sessionid_traverse_read(gather_sessioninfo, (void *) &sesslist);
-       if (ret == -1) {
+       if (ret < 0) {
                DEBUG(3, ("Session traverse failed\n"));
                SAFE_FREE(sesslist.sessions);
                *session_list = NULL;
index bfb9a225abd4889eb1c43c5a9b7964f91c98e96b..f8a7a8b62020b3bd185a3be1502665841ae8153d 100644 (file)
@@ -175,7 +175,7 @@ done:
        TALLOC_FREE(g_ctx);
        TALLOC_FREE(msg);
        TALLOC_FREE(ev);
-       return ret;
+       return ret < 0 ? -1 : ret;
 }
 
 int net_g_lock(struct net_context *c, int argc, const char **argv)
index 2c3320f40e1c51a6b95105482c1911f80a1cfc40..4159eead7a78b7cb225e213a3a473045c0a2f18c 100644 (file)
@@ -37,7 +37,7 @@ static int net_serverid_list(struct net_context *c, int argc,
                             const char **argv)
 {
        d_printf("pid unique_id msg_flags\n");
-       return serverid_traverse_read(net_serverid_list_fn, NULL) ? 0 : -1;
+       return serverid_traverse_read(net_serverid_list_fn, NULL) > 0 ? 0 : -1;
 }
 
 static int net_serverid_wipe_fn(struct db_record *rec,
@@ -62,7 +62,7 @@ static int net_serverid_wipe_fn(struct db_record *rec,
 static int net_serverid_wipe(struct net_context *c, int argc,
                             const char **argv)
 {
-       return serverid_traverse(net_serverid_wipe_fn, NULL) ? 0 : -1;
+       return serverid_traverse(net_serverid_wipe_fn, NULL) > 0 ? 0 : -1;
 }
 
 static int net_serverid_wipedbs_conn(
index cf625fb73fadffd96a423b8eeab8052136516518..4d37f7e66e56b493bb34c634344c693ea55055ad 100644 (file)
@@ -474,7 +474,7 @@ static int traverse_sessionid(const char *key, struct sessionid *session,
 
                if (result == 0) {
                        d_printf("No locked files\n");
-               } else if (result == -1) {
+               } else if (result < 0) {
                        d_printf("locked file list truncated\n");
                }
 
index c45aabc90263b67735e63dbf37e388cb1fbad984..b8028b1674b7ce2f93f0ffff2707bb1e72cd569b 100644 (file)
@@ -3383,7 +3383,7 @@ NTSTATUS wcache_remove_oldest_cached_creds(struct winbindd_domain *domain, const
        ret = tdb_traverse(cache->tdb, traverse_fn_get_credlist, NULL);
        if (ret == 0) {
                return NT_STATUS_OK;
-       } else if ((ret == -1) || (wcache_cred_list == NULL)) {
+       } else if ((ret < 0) || (wcache_cred_list == NULL)) {
                return NT_STATUS_OBJECT_NAME_NOT_FOUND;
        }
 
index 0e9f1e75ddf8f9e3577404eaeaad20fa7d1da413..45c36f09c9f9d91c719f53b20b14046beaf0f916 100644 (file)
@@ -1569,7 +1569,7 @@ int ltdb_reindex(struct ldb_module *module)
         * putting NULL entries in the in-memory tdb
         */
        ret = tdb_traverse(ltdb->tdb, delete_index, module);
-       if (ret == -1) {
+       if (ret < 0) {
                return LDB_ERR_OPERATIONS_ERROR;
        }
 
@@ -1583,7 +1583,7 @@ int ltdb_reindex(struct ldb_module *module)
 
        /* now traverse adding any indexes for normal LDB records */
        ret = tdb_traverse(ltdb->tdb, re_index, &ctx);
-       if (ret == -1) {
+       if (ret < 0) {
                struct ldb_context *ldb = ldb_module_get_ctx(module);
                ldb_asprintf_errstring(ldb, "reindexing traverse failed: %s", ldb_errstring(ldb));
                return LDB_ERR_OPERATIONS_ERROR;
index 30364897d9e5ecb39938080844cb7d9a04e8d4f0..46e2d749984f5754d8781f4f6192b3375dc15ab4 100644 (file)
@@ -480,7 +480,7 @@ static int ltdb_search_full(struct ltdb_context *ctx)
                ret = tdb_traverse_read(ltdb->tdb, search_func, ctx);
        }
 
-       if (ret == -1) {
+       if (ret < 0) {
                return LDB_ERR_OPERATIONS_ERROR;
        }