From 92567b8b8fb3411fb01a5dcb6ad50514b8974638 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20B=C3=BChler?= Date: Fri, 30 Aug 2013 13:14:59 +0000 Subject: [PATCH] [core] check whether server.chroot exists MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From: Stefan Bühler git-svn-id: svn://svn.lighttpd.net/lighttpd/branches/lighttpd-1.4.x@2896 152afb58-edef-0310-8abb-c4023f1b3aa9 --- NEWS | 1 + src/configfile.c | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/NEWS b/NEWS index f6267025..faac87e7 100644 --- a/NEWS +++ b/NEWS @@ -29,6 +29,7 @@ NEWS * [auth] put REMOTE_USER into cgi environment, making it accessible to lua via lighty.req_env (fixes #2495) * [auth] new method "extern" to use already present REMOTE_USER (from magnet, ssl, ...) (fixes #2436) * [core] remove requirement that default doc-root has to exist, there are reasonable scenarios not requiring static files at all + * [core] check whether server.chroot exists - 1.4.32 - 2012-11-21 * Code cleanup with clang/sparse (fixes #2437, thx kibi) diff --git a/src/configfile.c b/src/configfile.c index 9226ade8..7408ed0a 100644 --- a/src/configfile.c +++ b/src/configfile.c @@ -1241,6 +1241,18 @@ int config_set_defaults(server *srv) { { FDEVENT_HANDLER_UNSET, NULL } }; + if (!buffer_is_empty(srv->srvconf.changeroot)) { + if (-1 == stat(srv->srvconf.changeroot->ptr, &st1)) { + log_error_write(srv, __FILE__, __LINE__, "sb", + "server.chroot doesn't exist:", srv->srvconf.changeroot); + return -1; + } + if (!S_ISDIR(st1.st_mode)) { + log_error_write(srv, __FILE__, __LINE__, "sb", + "server.chroot isn't a directory:", srv->srvconf.changeroot); + return -1; + } + } if (buffer_is_empty(s->document_root)) { log_error_write(srv, __FILE__, __LINE__, "s",