From: Ralph Boehme Date: Sun, 9 Sep 2018 16:35:26 +0000 (+0200) Subject: dbwrap_ctdb: README.Coding fixes in traverse_callback() X-Git-Tag: tdb-1.3.17~1636 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dcc50d670702ccbd14f9e58857499911fa215e0b;p=thirdparty%2Fsamba.git dbwrap_ctdb: README.Coding fixes in traverse_callback() NULL initialize pointers, check function return values, explicit variable check against NULL. Signed-off-by: Ralph Boehme Reviewed-by: Jeremy Allison --- diff --git a/source3/lib/dbwrap/dbwrap_ctdb.c b/source3/lib/dbwrap/dbwrap_ctdb.c index b8fedb7dcd2..323cc0bea14 100644 --- a/source3/lib/dbwrap/dbwrap_ctdb.c +++ b/source3/lib/dbwrap/dbwrap_ctdb.c @@ -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);