]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
797. [func] Issue a warning if the 'directory' option contains
authorBrian Wellington <source@isc.org>
Thu, 29 Mar 2001 02:33:48 +0000 (02:33 +0000)
committerBrian Wellington <source@isc.org>
Thu, 29 Mar 2001 02:33:48 +0000 (02:33 +0000)
a relative path. [RT #269]

CHANGES
bin/named/server.c
lib/isc/include/isc/file.h
lib/isc/unix/file.c

diff --git a/CHANGES b/CHANGES
index 43588fe2f681495863d2a6f4620d610665df389a..391eee464a3d15689be106115c4750fbab482044 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,5 @@
+ 797.  [func]          Issue a warning if the 'directory' option contains
+                       a relative path. [RT #269]
 
  796.  [func]          When a size limit is associated with a log file,
                        only roll it when the size is reached, not every
index f6fdcf334aa126ccff93a83735cff6a6692761fc..9ccb0fcd1dd35752392193bd4629218cae0685f7 100644 (file)
@@ -15,7 +15,7 @@
  * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: server.c,v 1.313 2001/03/27 18:17:09 gson Exp $ */
+/* $Id: server.c,v 1.314 2001/03/29 02:33:43 bwelling Exp $ */
 
 #include <config.h>
 
@@ -1396,11 +1396,18 @@ directory_callback(const char *clausename, cfg_obj_t *obj, void *arg) {
         * Change directory.
         */
        directory = cfg_obj_asstring(obj);
+
+       if (!isc_file_isabsolute(directory) &&
+           !isc_file_iscurrentdir(directory))
+               cfg_obj_log(obj, ns_g_lctx, ISC_LOG_WARNING,
+                           "directory '%s' contains a relative path",
+                           directory);
+
        result = isc_dir_chdir(directory);
        if (result != ISC_R_SUCCESS) {
                cfg_obj_log(obj, ns_g_lctx, ISC_LOG_ERROR,
-                             "change directory to '%s' failed: %s",
-                             directory, isc_result_totext(result));
+                           "change directory to '%s' failed: %s",
+                           directory, isc_result_totext(result));
                return (result);
        }
 
index c17919d1fc89f99bce83007f65ee2800601d55ad..526a0bedcc38cda42b493897d955538f6a2de735 100644 (file)
@@ -15,7 +15,7 @@
  * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: file.h,v 1.14 2001/01/09 21:56:54 bwelling Exp $ */
+/* $Id: file.h,v 1.15 2001/03/29 02:33:47 bwelling Exp $ */
 
 #ifndef ISC_FILE_H
 #define ISC_FILE_H 1
@@ -171,6 +171,12 @@ isc_file_isabsolute(const char *filename);
  * Return ISC_TRUE iff the given file name is absolute.
  */
 
+isc_boolean_t
+isc_file_iscurrentdir(const char *filename);
+/*
+ * Return ISC_TRUE iff the given file name is the current directory (".").
+ */
+
 isc_result_t
 isc_file_template(const char *path, const char *templet, char *buf,
                  size_t buflen);
index 105fd59dab34e00c2f0138be0210e1343dcceafb..996e46973b9231de5605c73741fb6d01c92fca20 100644 (file)
@@ -15,7 +15,7 @@
  * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: file.c,v 1.28 2001/01/09 21:58:17 bwelling Exp $ */
+/* $Id: file.c,v 1.29 2001/03/29 02:33:48 bwelling Exp $ */
 
 #include <config.h>
 
@@ -228,3 +228,8 @@ isc_boolean_t
 isc_file_isabsolute(const char *filename) {
        return (ISC_TF(filename[0] == '/'));
 }
+
+isc_boolean_t
+isc_file_iscurrentdir(const char *filename) {
+       return (ISC_TF(filename[0] == '.' && filename[1] == '\0'));
+}