File tree 1 file changed +8
-2
lines changed
1 file changed +8
-2
lines changed Original file line number Diff line number Diff line change 8
8
*
9
9
*
10
10
* IDENTIFICATION
11
- * $PostgreSQL: pgsql/src/port/path.c,v 1.52 2005/08/11 03:53:25 momjian Exp $
11
+ * $PostgreSQL: pgsql/src/port/path.c,v 1.53 2005/08/12 02:48:37 momjian Exp $
12
12
*
13
13
*-------------------------------------------------------------------------
14
14
*/
@@ -284,7 +284,13 @@ canonicalize_path(char *path)
284
284
285
285
if (len > 2 && strcmp (path + len - 2 , "/." ) == 0 )
286
286
trim_directory (path );
287
- /* We can only deal with "/usr/local/..", not "/usr/local/../.." */
287
+ /*
288
+ * Process only a single trailing "..", and only if ".." does
289
+ * not preceed it.
290
+ * So, we only deal with "/usr/local/..", not with "/usr/local/../..".
291
+ * We don't handle the even more complex cases, like
292
+ * "usr/local/../../.." and "usr/local/../bin/../..".
293
+ */
288
294
else if (len > 3 && strcmp (path + len - 3 , "/.." ) == 0 &&
289
295
(len != 5 || strcmp (path , "../.." ) != 0 ) &&
290
296
(len < 6 || strcmp (path + len - 6 , "/../.." ) != 0 ))
You can’t perform that action at this time.
0 commit comments