diff options
Diffstat (limited to '')
-rw-r--r-- | xbmc/filesystem/test/TestZipManager.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/xbmc/filesystem/test/TestZipManager.cpp b/xbmc/filesystem/test/TestZipManager.cpp new file mode 100644 index 0000000..ca669c5 --- /dev/null +++ b/xbmc/filesystem/test/TestZipManager.cpp @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2017-2018 Team Kodi + * This file is part of Kodi - https://kodi.tv + * + * SPDX-License-Identifier: GPL-2.0-or-later + * See LICENSES/README.md for more information. + */ + +#include "filesystem/ZipManager.h" +#include "utils/RegExp.h" + +#include <gtest/gtest.h> + +TEST(TestZipManager, PathTraversal) +{ + CRegExp pathTraversal; + pathTraversal.RegComp(PATH_TRAVERSAL); + + ASSERT_TRUE(pathTraversal.RegFind("..") >= 0); + ASSERT_TRUE(pathTraversal.RegFind("../test.txt") >= 0); + ASSERT_TRUE(pathTraversal.RegFind("..\\test.txt") >= 0); + ASSERT_TRUE(pathTraversal.RegFind("test/../test.txt") >= 0); + ASSERT_TRUE(pathTraversal.RegFind("test\\../test.txt") >= 0); + ASSERT_TRUE(pathTraversal.RegFind("test\\..\\test.txt") >= 0); + + ASSERT_FALSE(pathTraversal.RegFind("...") >= 0); + ASSERT_FALSE(pathTraversal.RegFind("..test.txt") >= 0); + ASSERT_FALSE(pathTraversal.RegFind("test.txt..") >= 0); + ASSERT_FALSE(pathTraversal.RegFind("test..test.txt") >= 0); +} |