daemon: ensure that base-path is an existing directory
authorJohannes Sixt <j.sixt@viscovery.net>
Tue, 26 Feb 2008 12:00:55 +0000 (13:00 +0100)
committerJunio C Hamano <gitster@pobox.com>
Wed, 27 Feb 2008 22:47:36 +0000 (14:47 -0800)
Any request to the daemon would fail if base-path (if specified) is not
a directory. We now check for this condition early.

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
daemon.c

index dd0177f..2b4a6f1 100644 (file)
--- a/daemon.c
+++ b/daemon.c
@@ -1184,6 +1184,14 @@ int main(int argc, char **argv)
        if (strict_paths && (!ok_paths || !*ok_paths))
                die("option --strict-paths requires a whitelist");
 
+       if (base_path) {
+               struct stat st;
+
+               if (stat(base_path, &st) || !S_ISDIR(st.st_mode))
+                       die("base-path '%s' does not exist or "
+                           "is not a directory", base_path);
+       }
+
        if (inetd_mode) {
                struct sockaddr_storage ss;
                struct sockaddr *peer = (struct sockaddr *)&ss;