aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/commands/extension.c4
-rw-r--r--src/backend/libpq/hba.c10
-rw-r--r--src/backend/utils/misc/guc-file.l5
-rw-r--r--src/backend/utils/misc/guc.c8
-rw-r--r--src/include/utils/conffiles.h4
5 files changed, 20 insertions, 11 deletions
diff --git a/src/backend/commands/extension.c b/src/backend/commands/extension.c
index 806d6056ab6..cf1b1ca5716 100644
--- a/src/backend/commands/extension.c
+++ b/src/backend/commands/extension.c
@@ -60,6 +60,7 @@
#include "tcop/utility.h"
#include "utils/acl.h"
#include "utils/builtins.h"
+#include "utils/conffiles.h"
#include "utils/fmgroids.h"
#include "utils/lsyscache.h"
#include "utils/memutils.h"
@@ -515,7 +516,8 @@ parse_extension_control_file(ExtensionControlFile *control,
* Parse the file content, using GUC's file parsing code. We need not
* check the return value since any errors will be thrown at ERROR level.
*/
- (void) ParseConfigFp(file, filename, 0, ERROR, &head, &tail);
+ (void) ParseConfigFp(file, filename, CONF_FILE_START_DEPTH, ERROR,
+ &head, &tail);
FreeFile(file);
diff --git a/src/backend/libpq/hba.c b/src/backend/libpq/hba.c
index 862ec18e913..95677c48e43 100644
--- a/src/backend/libpq/hba.c
+++ b/src/backend/libpq/hba.c
@@ -79,7 +79,7 @@ typedef struct
/*
* Memory context holding the list of TokenizedAuthLines when parsing
* HBA or ident configuration files. This is created when opening the first
- * file (depth of 0).
+ * file (depth of CONF_FILE_START_DEPTH).
*/
static MemoryContext tokenize_context = NULL;
@@ -620,7 +620,7 @@ free_auth_file(FILE *file, int depth)
FreeFile(file);
/* If this is the last cleanup, remove the tokenization context */
- if (depth == 0)
+ if (depth == CONF_FILE_START_DEPTH)
{
MemoryContextDelete(tokenize_context);
tokenize_context = NULL;
@@ -650,7 +650,7 @@ open_auth_file(const char *filename, int elevel, int depth,
* avoid dumping core due to stack overflow if an include file loops back
* to itself. The maximum nesting depth is pretty arbitrary.
*/
- if (depth > 10)
+ if (depth > CONF_FILE_MAX_DEPTH)
{
ereport(elevel,
(errcode_for_file_access(),
@@ -684,7 +684,7 @@ open_auth_file(const char *filename, int elevel, int depth,
* tokenization. This will be closed with this file when coming back to
* this level of cleanup.
*/
- if (depth == 0)
+ if (depth == CONF_FILE_START_DEPTH)
{
/*
* A context may be present, but assume that it has been eliminated
@@ -762,7 +762,7 @@ tokenize_auth_file(const char *filename, FILE *file, List **tok_lines,
initStringInfo(&buf);
- if (depth == 0)
+ if (depth == CONF_FILE_START_DEPTH)
*tok_lines = NIL;
while (!feof(file) && !ferror(file))
diff --git a/src/backend/utils/misc/guc-file.l b/src/backend/utils/misc/guc-file.l
index 88245475d1c..f7e4457dedc 100644
--- a/src/backend/utils/misc/guc-file.l
+++ b/src/backend/utils/misc/guc-file.l
@@ -202,7 +202,7 @@ ParseConfigFile(const char *config_file, bool strict,
* avoid dumping core due to stack overflow if an include file loops back
* to itself. The maximum nesting depth is pretty arbitrary.
*/
- if (depth > 10)
+ if (depth > CONF_FILE_MAX_DEPTH)
{
ereport(elevel,
(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
@@ -321,7 +321,8 @@ GUC_flex_fatal(const char *msg)
* Input parameters:
* fp: file pointer from AllocateFile for the configuration file to parse
* config_file: absolute or relative path name of the configuration file
- * depth: recursion depth (should be 0 in the outermost call)
+ * depth: recursion depth (should be CONF_FILE_START_DEPTH in the outermost
+ * call)
* elevel: error logging level to use
* Input/Output parameters:
* head_p, tail_p: head and tail of linked list of name/value pairs
diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
index 117a2d26a0e..28313b3a94a 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -44,6 +44,7 @@
#include "utils/acl.h"
#include "utils/backend_status.h"
#include "utils/builtins.h"
+#include "utils/conffiles.h"
#include "utils/float.h"
#include "utils/guc_tables.h"
#include "utils/memutils.h"
@@ -287,7 +288,7 @@ ProcessConfigFileInternal(GucContext context, bool applySettings, int elevel)
head = tail = NULL;
if (!ParseConfigFile(ConfigFileName, true,
- NULL, 0, 0, elevel,
+ NULL, 0, CONF_FILE_START_DEPTH, elevel,
&head, &tail))
{
/* Syntax error(s) detected in the file, so bail out */
@@ -304,7 +305,7 @@ ProcessConfigFileInternal(GucContext context, bool applySettings, int elevel)
if (DataDir)
{
if (!ParseConfigFile(PG_AUTOCONF_FILENAME, false,
- NULL, 0, 0, elevel,
+ NULL, 0, CONF_FILE_START_DEPTH, elevel,
&head, &tail))
{
/* Syntax error(s) detected in the file, so bail out */
@@ -4582,7 +4583,8 @@ AlterSystemSetConfigFile(AlterSystemStmt *altersysstmt)
AutoConfFileName)));
/* parse it */
- if (!ParseConfigFp(infile, AutoConfFileName, 0, LOG, &head, &tail))
+ if (!ParseConfigFp(infile, AutoConfFileName, CONF_FILE_START_DEPTH,
+ LOG, &head, &tail))
ereport(ERROR,
(errcode(ERRCODE_CONFIG_FILE_ERROR),
errmsg("could not parse contents of file \"%s\"",
diff --git a/src/include/utils/conffiles.h b/src/include/utils/conffiles.h
index 3f23a2a011b..f4d73f96b2f 100644
--- a/src/include/utils/conffiles.h
+++ b/src/include/utils/conffiles.h
@@ -13,6 +13,10 @@
#ifndef CONFFILES_H
#define CONFFILES_H
+/* recursion nesting depth for configuration files */
+#define CONF_FILE_START_DEPTH 0
+#define CONF_FILE_MAX_DEPTH 10
+
extern char *AbsoluteConfigLocation(const char *location,
const char *calling_file);
extern char **GetConfFilesInDir(const char *includedir,