Commit 6effc19d authored by Bruce Momjian's avatar Bruce Momjian

Document why we only handle trailing "..".

parent 721e5378
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/port/path.c,v 1.52 2005/08/11 03:53:25 momjian Exp $ * $PostgreSQL: pgsql/src/port/path.c,v 1.53 2005/08/12 02:48:37 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -284,7 +284,13 @@ canonicalize_path(char *path) ...@@ -284,7 +284,13 @@ canonicalize_path(char *path)
if (len > 2 && strcmp(path + len - 2, "/.") == 0) if (len > 2 && strcmp(path + len - 2, "/.") == 0)
trim_directory(path); trim_directory(path);
/* We can only deal with "/usr/local/..", not "/usr/local/../.." */ /*
* Process only a single trailing "..", and only if ".." does
* not preceed it.
* So, we only deal with "/usr/local/..", not with "/usr/local/../..".
* We don't handle the even more complex cases, like
* "usr/local/../../.." and "usr/local/../bin/../..".
*/
else if (len > 3 && strcmp(path + len - 3, "/..") == 0 && else if (len > 3 && strcmp(path + len - 3, "/..") == 0 &&
(len != 5 || strcmp(path, "../..") != 0) && (len != 5 || strcmp(path, "../..") != 0) &&
(len < 6 || strcmp(path + len - 6, "/../..") != 0)) (len < 6 || strcmp(path + len - 6, "/../..") != 0))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment