simplify_path: we CANNOT simplify pathnames beginning with //
since they’re implementation-defined and *not absolute*!
This commit is contained in:
parent
79862cc1f4
commit
c2333a7dbd
6
misc.c
6
misc.c
@ -29,7 +29,7 @@
|
|||||||
#include <grp.h>
|
#include <grp.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
__RCSID("$MirOS: src/bin/mksh/misc.c,v 1.159 2011/03/26 15:37:19 tg Exp $");
|
__RCSID("$MirOS: src/bin/mksh/misc.c,v 1.160 2011/03/26 19:29:41 tg Exp $");
|
||||||
|
|
||||||
/* type bits for unsigned char */
|
/* type bits for unsigned char */
|
||||||
unsigned char chtypes[UCHAR_MAX + 1];
|
unsigned char chtypes[UCHAR_MAX + 1];
|
||||||
@ -1514,6 +1514,7 @@ make_path(const char *cwd, const char *file,
|
|||||||
/*
|
/*
|
||||||
* Simplify pathnames containing "." and ".." entries.
|
* Simplify pathnames containing "." and ".." entries.
|
||||||
* ie, simplify_path("/a/b/c/./../d/..") returns "/a/b"
|
* ie, simplify_path("/a/b/c/./../d/..") returns "/a/b"
|
||||||
|
* but simplify_path("//./C/foo/bar/../baz") stays as it is
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
simplify_path(char *pathl)
|
simplify_path(char *pathl)
|
||||||
@ -1529,7 +1530,8 @@ simplify_path(char *pathl)
|
|||||||
very_start++;
|
very_start++;
|
||||||
/* exactly two leading slashes? (SUSv4 3.266) */
|
/* exactly two leading slashes? (SUSv4 3.266) */
|
||||||
if (isrooted && pathl[1] == '/' && pathl[2] != '/')
|
if (isrooted && pathl[1] == '/' && pathl[2] != '/')
|
||||||
very_start++;
|
/* implementation defined, we CANNOT simplify this */
|
||||||
|
return;
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Before After
|
* Before After
|
||||||
|
Loading…
x
Reference in New Issue
Block a user