diff --git a/httplib.h b/httplib.h index bfb74d5..4f61165 100644 --- a/httplib.h +++ b/httplib.h @@ -2418,6 +2418,7 @@ inline bool is_valid_path(const std::string &path) { auto beg = i; while (i < path.size() && path[i] != '/') { if (path[i] == '\0') { return false; } + else if (path[i] == '\\') { return false; } i++; } diff --git a/test/test.cc b/test/test.cc index 7b6e8d9..cfcc5f9 100644 --- a/test/test.cc +++ b/test/test.cc @@ -2509,6 +2509,12 @@ TEST_F(ServerTest, GetMethodOutOfBaseDirMount2) { EXPECT_EQ(StatusCode::NotFound_404, res->status); } +TEST_F(ServerTest, GetMethodOutOfBaseDirMountWithBackslash) { + auto res = cli_.Get("/mount/%2e%2e%5c/www2/dir/test.html"); + ASSERT_TRUE(res); + EXPECT_EQ(StatusCode::NotFound_404, res->status); +} + TEST_F(ServerTest, PostMethod303) { auto res = cli_.Post("/1", "body", "text/plain"); ASSERT_TRUE(res);