mirror of
https://github.com/yhirose/cpp-httplib.git
synced 2026-10-23 11:54:42 +00:00
Fix #2425
This commit is contained in:
1 parent
ee5d15c842
commit
7e2a173072
2 files changed
+12
-1
No files matched your search
@@ -4889,10 +4889,15 @@ inline bool canonicalize_path(const char *path, std::string &resolved) {
|
|||||||
char buf[_MAX_PATH];
|
char buf[_MAX_PATH];
|
||||||
if (_fullpath(buf, path, _MAX_PATH) == nullptr) { return false; }
|
if (_fullpath(buf, path, _MAX_PATH) == nullptr) { return false; }
|
||||||
resolved = buf;
|
resolved = buf;
|
||||||
#else
|
#elif defined(PATH_MAX)
|
||||||
char buf[PATH_MAX];
|
char buf[PATH_MAX];
|
||||||
if (realpath(path, buf) == nullptr) { return false; }
|
if (realpath(path, buf) == nullptr) { return false; }
|
||||||
resolved = buf;
|
resolved = buf;
|
||||||
|
#else
|
||||||
|
auto buf = realpath(path, nullptr);
|
||||||
|
auto guard = scope_exit([&]() { std::free(buf); });
|
||||||
|
if (buf == nullptr) { return false; }
|
||||||
|
resolved = buf;
|
||||||
#endif
|
#endif
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17540,8 +17540,14 @@ TEST(SymlinkTest, SymlinkEscapeFromBaseDirectory) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Create symlink using absolute path so it resolves correctly
|
// Create symlink using absolute path so it resolves correctly
|
||||||
|
#ifdef PATH_MAX
|
||||||
char abs_secret[PATH_MAX];
|
char abs_secret[PATH_MAX];
|
||||||
ASSERT_NE(nullptr, realpath(secret_dir.c_str(), abs_secret));
|
ASSERT_NE(nullptr, realpath(secret_dir.c_str(), abs_secret));
|
||||||
|
#else
|
||||||
|
auto abs_secret = realpath(secret_dir.c_str(), nullptr);
|
||||||
|
auto abs_secret_guard = detail::scope_exit([&]() { std::free(abs_secret); });
|
||||||
|
ASSERT_NE(nullptr, abs_secret);
|
||||||
|
#endif
|
||||||
ASSERT_EQ(0, symlink(abs_secret, symlink_path.c_str()));
|
ASSERT_EQ(0, symlink(abs_secret, symlink_path.c_str()));
|
||||||
|
|
||||||
auto se = detail::scope_exit([&] {
|
auto se = detail::scope_exit([&] {
|
||||||
|
|||||||
Reference in new issue
Block a user