From 89b0d5ac6cd7f2c47148a9ac87ce8d6aea40050b Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Tue, 19 Jun 2012 12:38:33 +0930 Subject: ntdb: simply disallow NULL names. TDB allows this for internal databases, but it's a bad idea, since the name is useful for logging. They're a hassle to deal with, and we'd just end up putting "unnamed" in there, so let the user deal with it. If they don't, they get an informative core dump. Signed-off-by: Rusty Russell --- lib/ntdb/ntdb.h | 5 ++--- lib/ntdb/open.c | 8 ++------ lib/ntdb/test/helprun-layout.c | 2 +- 3 files changed, 5 insertions(+), 10 deletions(-) (limited to 'lib/ntdb') diff --git a/lib/ntdb/ntdb.h b/lib/ntdb/ntdb.h index f2b80023cd..1a011fddf5 100644 --- a/lib/ntdb/ntdb.h +++ b/lib/ntdb/ntdb.h @@ -89,7 +89,7 @@ typedef struct TDB_DATA NTDB_DATA; /** * ntdb_open - open a database file - * @name: the file name (can be NULL if flags contains NTDB_INTERNAL) + * @name: the file name (or database name if flags contains NTDB_INTERNAL) * @ntdb_flags: options for this database * @open_flags: flags argument for ntdb's open() call. * @mode: mode argument for ntdb's open() call. @@ -680,8 +680,7 @@ void ntdb_unset_attribute(struct ntdb_context *ntdb, * ntdb_name - get the name of a ntdb * @ntdb: the ntdb context returned from ntdb_open() * - * This returns a copy of the name string, made at ntdb_open() time. If that - * argument was NULL (possible for a NTDB_INTERNAL db) this will return NULL. + * This returns a copy of the name string, made at ntdb_open() time. * * This is mostly useful for logging. */ diff --git a/lib/ntdb/open.c b/lib/ntdb/open.c index 5a781c9328..01a0928074 100644 --- a/lib/ntdb/open.c +++ b/lib/ntdb/open.c @@ -422,18 +422,14 @@ _PUBLIC_ struct ntdb_context *ntdb_open(const char *name, int ntdb_flags, enum NTDB_ERROR ecode; int openlock; - ntdb = malloc(sizeof(*ntdb) + (name ? strlen(name) + 1 : 0)); + ntdb = malloc(sizeof(*ntdb) + strlen(name) + 1); if (!ntdb) { /* Can't log this */ errno = ENOMEM; return NULL; } /* Set name immediately for logging functions. */ - if (name) { - ntdb->name = strcpy((char *)(ntdb + 1), name); - } else { - ntdb->name = NULL; - } + ntdb->name = strcpy((char *)(ntdb + 1), name); ntdb->flags = ntdb_flags; ntdb->log_fn = NULL; ntdb->open_flags = open_flags; diff --git a/lib/ntdb/test/helprun-layout.c b/lib/ntdb/test/helprun-layout.c index c8f1fd03c4..7f1f9f9d8e 100644 --- a/lib/ntdb/test/helprun-layout.c +++ b/lib/ntdb/test/helprun-layout.c @@ -313,7 +313,7 @@ struct ntdb_context *ntdb_layout_get(struct ntdb_layout *layout, /* Fill with some weird pattern. */ memset(mem, 0x99, off); /* Now populate our header, cribbing from a real NTDB header. */ - ntdb = ntdb_open(NULL, NTDB_INTERNAL, O_RDWR, 0, attr); + ntdb = ntdb_open("layout", NTDB_INTERNAL, O_RDWR, 0, attr); memcpy(mem, ntdb->file->map_ptr, sizeof(struct ntdb_header)); /* Mug the ntdb we have to make it use this. */ -- cgit