summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRusty Russell <rusty@rustcorp.com.au>2012-06-19 12:38:33 +0930
committerRusty Russell <rusty@rustcorp.com.au>2012-06-19 05:38:06 +0200
commit89b0d5ac6cd7f2c47148a9ac87ce8d6aea40050b (patch)
tree7834c6c649151ccdfb1a8bd4a6e2fffa57354896
parent7fae6c44e2ffd720af406d1e0b48c08007091aab (diff)
downloadsamba-89b0d5ac6cd7f2c47148a9ac87ce8d6aea40050b.tar.gz
samba-89b0d5ac6cd7f2c47148a9ac87ce8d6aea40050b.tar.bz2
samba-89b0d5ac6cd7f2c47148a9ac87ce8d6aea40050b.zip
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 <rusty@rustcorp.com.au>
-rw-r--r--lib/ntdb/ntdb.h5
-rw-r--r--lib/ntdb/open.c8
-rw-r--r--lib/ntdb/test/helprun-layout.c2
3 files changed, 5 insertions, 10 deletions
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. */