aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Paquier <michael@paquier.xyz>2020-02-14 12:38:44 +0900
committerMichael Paquier <michael@paquier.xyz>2020-02-14 12:38:44 +0900
commit11f063b0a974f4e1c87c26d0fe259c2167f3d00e (patch)
treeceaac5d73e68b504a9cecd831dbe890a6eff44ac
parenteb67623c965b4759a96309cdb58a17339fc5d401 (diff)
downloadpostgresql-11f063b0a974f4e1c87c26d0fe259c2167f3d00e.tar.gz
postgresql-11f063b0a974f4e1c87c26d0fe259c2167f3d00e.zip
Remove some dead code in contrib/adminpack/
Since its introduction in fe59e56, the code in charge of validating and converting a file path includes some extra handling for absolute paths pointing to an external log_directory, but this has never been used. Author: Antonin Houska Reviewed-by: Julien Rouhaud, Michael Paquier Discussion: https://postgr.es/m/32663.1581592539@antos
-rw-r--r--contrib/adminpack/adminpack.c27
1 files changed, 11 insertions, 16 deletions
diff --git a/contrib/adminpack/adminpack.c b/contrib/adminpack/adminpack.c
index 29b46aea3ec..ba69c74b5a9 100644
--- a/contrib/adminpack/adminpack.c
+++ b/contrib/adminpack/adminpack.c
@@ -69,10 +69,10 @@ typedef struct
* Convert a "text" filename argument to C string, and check it's allowable.
*
* Filename may be absolute or relative to the DataDir, but we only allow
- * absolute paths that match DataDir or Log_directory.
+ * absolute paths that match DataDir.
*/
static char *
-convert_and_check_filename(text *arg, bool logAllowed)
+convert_and_check_filename(text *arg)
{
char *filename = text_to_cstring(arg);
@@ -95,13 +95,8 @@ convert_and_check_filename(text *arg, bool logAllowed)
(errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
errmsg("reference to parent directory (\"..\") not allowed")));
- /*
- * Allow absolute paths if within DataDir or Log_directory, even
- * though Log_directory might be outside DataDir.
- */
- if (!path_is_prefix_of_path(DataDir, filename) &&
- (!logAllowed || !is_absolute_path(Log_directory) ||
- !path_is_prefix_of_path(Log_directory, filename)))
+ /* Allow absolute paths if within DataDir */
+ if (!path_is_prefix_of_path(DataDir, filename))
ereport(ERROR,
(errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
errmsg("absolute path not allowed")));
@@ -185,7 +180,7 @@ pg_file_write_internal(text *file, text *data, bool replace)
char *filename;
int64 count = 0;
- filename = convert_and_check_filename(file, false);
+ filename = convert_and_check_filename(file);
if (!replace)
{
@@ -228,7 +223,7 @@ pg_file_sync(PG_FUNCTION_ARGS)
char *filename;
struct stat fst;
- filename = convert_and_check_filename(PG_GETARG_TEXT_PP(0), false);
+ filename = convert_and_check_filename(PG_GETARG_TEXT_PP(0));
if (stat(filename, &fst) < 0)
ereport(ERROR,
@@ -319,13 +314,13 @@ pg_file_rename_internal(text *file1, text *file2, text *file3)
*fn3;
int rc;
- fn1 = convert_and_check_filename(file1, false);
- fn2 = convert_and_check_filename(file2, false);
+ fn1 = convert_and_check_filename(file1);
+ fn2 = convert_and_check_filename(file2);
if (file3 == NULL)
fn3 = NULL;
else
- fn3 = convert_and_check_filename(file3, false);
+ fn3 = convert_and_check_filename(file3);
if (access(fn1, W_OK) < 0)
{
@@ -411,7 +406,7 @@ pg_file_unlink(PG_FUNCTION_ARGS)
requireSuperuser();
- filename = convert_and_check_filename(PG_GETARG_TEXT_PP(0), false);
+ filename = convert_and_check_filename(PG_GETARG_TEXT_PP(0));
if (access(filename, W_OK) < 0)
{
@@ -449,7 +444,7 @@ pg_file_unlink_v1_1(PG_FUNCTION_ARGS)
{
char *filename;
- filename = convert_and_check_filename(PG_GETARG_TEXT_PP(0), false);
+ filename = convert_and_check_filename(PG_GETARG_TEXT_PP(0));
if (access(filename, W_OK) < 0)
{