From 76528555dc4878df61d677534964927385670249 Mon Sep 17 00:00:00 2001 From: "J. Alexander Treuman" Date: Sun, 23 Jul 2006 23:42:16 +0000 Subject: If we're going to create the db file, make sure the parent path is a directory git-svn-id: https://svn.musicpd.org/mpd/trunk@4437 09075e82-0dd4-0310-85a5-a0d7c8717e4f --- src/directory.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/directory.c b/src/directory.c index 6a46051ba..85060670a 100644 --- a/src/directory.c +++ b/src/directory.c @@ -1036,6 +1036,21 @@ int checkDirectoryDB() dbPath = strdup(dbFile); dirPath = dirname(dbPath); + /* Check that the parent part of the path is a directory */ + if (stat(dirPath, &st) < 0) { + ERROR("Couldn't stat parent directory of db file " + "\"%s\": %s\n", dbFile, strerror(errno)); + free(dbPath); + return -1; + } + + if (!S_ISDIR(st.st_mode)) { + ERROR("Couldn't create db file \"%s\" because the " + "parent path is not a directory\n", dbFile); + free(dbPath); + return -1; + } + /* Check if we can write to the directory */ if (access(dirPath, R_OK | W_OK)) { ERROR("Can't create db file in \"%s\": %s\n", dirPath, @@ -1051,7 +1066,7 @@ int checkDirectoryDB() /* Path exists, now check if it's a regular file */ if (stat(dbFile, &st) < 0) { - ERROR("Error stat'ing db file \"%s\": %s\n", dbFile, + ERROR("Couldn't stat db file \"%s\": %s\n", dbFile, strerror(errno)); return -1; } -- cgit v1.2.3