From: Mark Andrews Date: Wed, 9 Jan 2008 04:48:33 +0000 (+0000) Subject: 2292. [bug] Log if the working directory is not writable. X-Git-Tag: v9.3.5rc1~76^2~6 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=f61a7c87bf36b189d8f04ea4c8ab3ec55778355c;p=thirdparty%2Fbind9.git 2292. [bug] Log if the working directory is not writable. [RT #17312] 2291. [bug] PR_SET_DUMPABLE may be set too late. Also report failure to set PR_SET_DUMPABLE. [RT #17312] --- diff --git a/CHANGES b/CHANGES index 6cabbd86d74..6701087549e 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,9 @@ +2292. [bug] Log if the working directory is not writable. + [RT #17312] + +2291. [bug] PR_SET_DUMPABLE may be set too late. Also report + failure to set PR_SET_DUMPABLE. [RT #17312] + 2290. [bug] Let AD in the query signal that the client wants AD set in the response. [RT #17301] diff --git a/bin/named/server.c b/bin/named/server.c index 09496eacf38..86f7529881f 100644 --- a/bin/named/server.c +++ b/bin/named/server.c @@ -15,13 +15,14 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: server.c,v 1.495 2007/12/14 04:01:20 marka Exp $ */ +/* $Id: server.c,v 1.496 2008/01/09 04:48:33 marka Exp $ */ /*! \file */ #include #include +#include #include #include @@ -2934,6 +2935,15 @@ load_configuration(const char *filename, ns_server_t *server, } CHECK(result); + /* + * Check that the working directory is writable. + */ + if (access(".", W_OK) != 0) { + isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, + NS_LOGMODULE_SERVER, ISC_LOG_ERROR, + "the working directory is not writable"); + } + /* * Check the validity of the configuration. */ diff --git a/bin/named/unix/os.c b/bin/named/unix/os.c index 206deba44f4..38652e12108 100644 --- a/bin/named/unix/os.c +++ b/bin/named/unix/os.c @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: os.c,v 1.79 2007/06/19 23:46:59 tbox Exp $ */ +/* $Id: os.c,v 1.80 2008/01/09 04:48:33 marka Exp $ */ /*! \file */ @@ -496,15 +496,19 @@ ns_os_changeuser(void) { ns_main_earlyfatal("setuid(): %s", strbuf); } -#if defined(HAVE_LINUX_CAPABILITY_H) && !defined(HAVE_LINUXTHREADS) - linux_minprivs(); -#endif #if defined(HAVE_SYS_PRCTL_H) && defined(PR_SET_DUMPABLE) /* * Restore the ability of named to drop core after the setuid() * call has disabled it. */ - prctl(PR_SET_DUMPABLE,1,0,0,0); + if (prctl(PR_SET_DUMPABLE,1,0,0,0) < 0) { + isc__strerror(errno, strbuf, sizeof(strbuf)); + ns_main_earlywarning("prctl(PR_SET_DUMPABLE) failed: %s", + strbuf); + } +#endif +#if defined(HAVE_LINUX_CAPABILITY_H) && !defined(HAVE_LINUXTHREADS) + linux_minprivs(); #endif }