dbwrap_ctdb: README.Coding fixes in traverse_callback()
authorRalph Boehme <slow@samba.org>
Sun, 9 Sep 2018 16:35:26 +0000 (18:35 +0200)
committerJeremy Allison <jra@samba.org>
Wed, 12 Sep 2018 20:25:19 +0000 (22:25 +0200)
NULL initialize pointers, check function return values, explicit
variable check against NULL.

Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/lib/dbwrap/dbwrap_ctdb.c

index b8fedb7dcd2f4be33687aa06882205f4fa678bd6..323cc0bea14e2e1cf66d14d50bec0b516a9087b9 100644 (file)
@@ -1532,11 +1532,18 @@ struct traverse_state {
 static void traverse_callback(TDB_DATA key, TDB_DATA data, void *private_data)
 {
        struct traverse_state *state = (struct traverse_state *)private_data;
-       struct db_record *rec;
-       TALLOC_CTX *tmp_ctx = talloc_new(state->db);
+       struct db_record *rec = NULL;
+       TALLOC_CTX *tmp_ctx = NULL;
+
+       tmp_ctx = talloc_new(state->db);
+       if (tmp_ctx == NULL) {
+               DBG_ERR("talloc_new failed\n");
+               return;
+       }
+
        /* we have to give them a locked record to prevent races */
        rec = db_ctdb_fetch_locked(state->db, tmp_ctx, key);
-       if (rec && rec->value.dsize > 0) {
+       if (rec != NULL && rec->value.dsize > 0) {
                state->fn(rec, state->private_data);
        }
        talloc_free(tmp_ctx);