1
0
mirror of https://github.com/facebook/zstd.git synced 2025-03-06 16:56:49 +02:00

Detect .. in Paths Correctly

This commit addresses #2509.
This commit is contained in:
W. Felix Handte 2021-02-26 12:29:42 -05:00
parent aad85f19f0
commit 61db590ad8

View File

@ -679,7 +679,27 @@ const char* UTIL_getFileExtension(const char* infilename)
static int pathnameHas2Dots(const char *pathname)
{
return NULL != strstr(pathname, "..");
/* We need to figure out whether any ".." present in the path is a whole
* path token, which is the case if it is bordered on both sides by either
* the beginning/end of the path or by a directory separator.
*/
const char *needle = pathname;
while (1) {
needle = strstr(needle, "..");
if (needle == NULL) {
return 0;
}
if ((needle == pathname || needle[-1] == PATH_SEP)
&& (needle[2] == '\0' || needle[2] == PATH_SEP)) {
return 1;
}
/* increment so we search for the next match */
needle++;
};
return 0;
}
static int isFileNameValidForMirroredOutput(const char *filename)