Ensure that pathname buffers have space for the NUL terminator. Note this function is currently unused.
Fixes: 0520ee72 (Initial commit) Signed-off-by: Chuck Lever <[email protected]> --- src/libnsdb/nsdb.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/libnsdb/nsdb.c b/src/libnsdb/nsdb.c index 41d0e9e2b2a7..f4adc72074b4 100644 --- a/src/libnsdb/nsdb.c +++ b/src/libnsdb/nsdb.c @@ -95,7 +95,7 @@ static char fedfs_nsdbcerts_dirname[PATH_MAX + 1] = /** * Stores pathname of database containing FedFS persistent state */ -static char fedfs_db_filename[PATH_MAX] = +static char fedfs_db_filename[PATH_MAX + 1] = FEDFS_DEFAULT_STATEDIR "/" FEDFS_DATABASE_FILE; /** @@ -110,15 +110,23 @@ static char fedfs_db_filename[PATH_MAX] = _Bool nsdb_set_parentdir(const char *parentdir) { - static char buf[PATH_MAX]; + static char buf[PATH_MAX + 1]; struct stat st; char *path; int len; + if (parentdir == NULL) { + xlog(D_GENERAL, "%s: Passed a NULL argument", __func__); + return false; + } + if (strlen(parentdir) > PATH_MAX) { + xlog(D_GENERAL, "%s: Argument too long", __func__); + return false; + } + xlog(D_CALL, "%s: Setting up %s as our FedFS state directory", __func__, parentdir); - /* First: test length of name and whether it exists */ if (lstat(parentdir, &st) == -1) { xlog(D_GENERAL, "%s: Failed to stat %s: %m", __func__, parentdir); @@ -129,12 +137,10 @@ nsdb_set_parentdir(const char *parentdir) __func__, parentdir); return false; } - - /* Ensure we have a clean directory pathname */ - strncpy(buf, parentdir, sizeof(buf)); + strcpy(buf, parentdir); path = dirname(buf); if (*path == '.') { - xlog(D_GENERAL, "%s: Unusable pathname %s", + xlog(D_GENERAL, "%s: Pathname %s is relative", __func__, parentdir); return false; } @@ -154,9 +160,7 @@ nsdb_set_parentdir(const char *parentdir) return false; } strcpy(fedfs_nsdbcerts_dirname, buf); - - strncpy(fedfs_base_dirname, parentdir, sizeof(fedfs_base_dirname)); - + strcpy(fedfs_base_dirname, parentdir); return true; } _______________________________________________ fedfs-utils-devel mailing list [email protected] https://oss.oracle.com/mailman/listinfo/fedfs-utils-devel
