From efda07f8f8bb9f07b8242a443aab91f8279476db Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Tue, 14 Jul 2009 21:45:52 +0930 Subject: [PATCH] Fix null ptr deref on TDB_TRACE with internal db. --- ccan/tdb/open.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/ccan/tdb/open.c b/ccan/tdb/open.c index 4a1cb235..69885284 100644 --- a/ccan/tdb/open.c +++ b/ccan/tdb/open.c @@ -153,9 +153,6 @@ struct tdb_context *tdb_open_ex(const char *name, int hash_size, int tdb_flags, unsigned char *vp; uint32_t vertest; unsigned v; -#ifdef TDB_TRACE - char tracefile[strlen(name) + 32]; -#endif if (!(tdb = (struct tdb_context *)calloc(1, sizeof *tdb))) { /* Can't log this */ @@ -322,12 +319,17 @@ struct tdb_context *tdb_open_ex(const char *name, int hash_size, int tdb_flags, } #ifdef TDB_TRACE - sprintf(tracefile, "%s.trace.%u", name, getpid()); - tdb->tracefd = open(tracefile, O_WRONLY|O_CREAT|O_EXCL, 0600); - if (tdb->tracefd < 0) - goto fail; - tdb_enable_seqnum(tdb); - tdb_trace_open(tdb, "tdb_open", hash_size, tdb_flags, open_flags); + { + char tracefile[strlen(name) + 32]; + + sprintf(tracefile, "%s.trace.%u", name, getpid()); + tdb->tracefd = open(tracefile, O_WRONLY|O_CREAT|O_EXCL, 0600); + if (tdb->tracefd < 0) + goto fail; + tdb_enable_seqnum(tdb); + tdb_trace_open(tdb, "tdb_open", hash_size, tdb_flags, + open_flags); + } #endif internal: -- 2.39.2