]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
3197. [bug] Don't try to log the filename and line number when
authorEvan Hunt <each@isc.org>
Thu, 3 Nov 2011 05:15:09 +0000 (05:15 +0000)
committerEvan Hunt <each@isc.org>
Thu, 3 Nov 2011 05:15:09 +0000 (05:15 +0000)
the config parser can't open a file. [RT #22263]

CHANGES
lib/isccfg/parser.c

diff --git a/CHANGES b/CHANGES
index 50e84e642a5499cc37a30ebb4d38e7b498c43f16..c00bb8357f6d413b7936446986d0a5afc312ada2 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+3197.  [bug]           Don't try to log the filename and line number when 
+                       the config parser can't open a file. [RT #22263]
+
 3196.   [bug]           nsupdate: return nonzero exit code when target zone
                         doesn't exist. [RT #25783]
 
index c5edf1ba5f0e5edcc4bb90e354cdf880dba0c23a..402fdca4e7520207918d7e551c70618bc0532941 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: parser.c,v 1.141 2011/03/11 06:11:27 marka Exp $ */
+/* $Id: parser.c,v 1.142 2011/11/03 05:15:09 each Exp $ */
 
 /*! \file */
 
@@ -2232,16 +2232,30 @@ cfg_parser_warning(cfg_parser_t *pctx, unsigned int flags, const char *fmt, ...)
 
 #define MAX_LOG_TOKEN 30 /* How much of a token to quote in log messages. */
 
+static isc_boolean_t
+have_current_file(cfg_parser_t *pctx) {
+       cfg_listelt_t *elt;
+       if (pctx->open_files == NULL)
+               return (ISC_FALSE);
+
+       elt = ISC_LIST_TAIL(pctx->open_files->value.list);
+       if (elt == NULL)
+             return (ISC_FALSE);
+
+       return (ISC_TRUE);
+}
+
 static char *
 current_file(cfg_parser_t *pctx) {
        static char none[] = "none";
        cfg_listelt_t *elt;
        cfg_obj_t *fileobj;
 
-       if (pctx->open_files == NULL)
+       if (!have_current_file(pctx))
                return (none);
+
        elt = ISC_LIST_TAIL(pctx->open_files->value.list);
-       if (elt == NULL)
+       if (elt == NULL)        /* shouldn't be possible, but... */
              return (none);
 
        fileobj = elt->obj;
@@ -2264,8 +2278,10 @@ parser_complain(cfg_parser_t *pctx, isc_boolean_t is_warning,
        if (is_warning)
                level = ISC_LOG_WARNING;
 
-       snprintf(where, sizeof(where), "%s:%u: ",
-                current_file(pctx), pctx->line);
+       where[0] = '\0';
+       if (have_current_file(pctx))
+               snprintf(where, sizeof(where), "%s:%u: ",
+                        current_file(pctx), pctx->line);
 
        len = vsnprintf(message, sizeof(message), format, args);
        if (len >= sizeof(message))