mirror of
https://github.com/yhirose/cpp-httplib.git
synced 2026-06-10 08:37:15 +00:00
Guard nullptr res in KeepAliveTest proxy template (#2443)
When the upstream request to httpbingo.org transiently fails, cli.Get() returns nullptr and the next line dereferences it (res->status / res->body), producing a SEGV in std::string::begin() under ASan. Sibling templates in the same file already use ASSERT_TRUE(res != nullptr); apply the same guard to the four Get() call sites in KeepAliveTest so a flaky network turns into a clean test failure instead of a crash.
This commit is contained in:
@@ -291,10 +291,12 @@ template <typename T> void KeepAliveTest(T &cli, bool basic) {
|
|||||||
|
|
||||||
{
|
{
|
||||||
auto res = cli.Get("/get");
|
auto res = cli.Get("/get");
|
||||||
|
ASSERT_TRUE(res != nullptr);
|
||||||
EXPECT_EQ(StatusCode::OK_200, res->status);
|
EXPECT_EQ(StatusCode::OK_200, res->status);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
auto res = cli.Get("/redirect/2");
|
auto res = cli.Get("/redirect/2");
|
||||||
|
ASSERT_TRUE(res != nullptr);
|
||||||
EXPECT_EQ(StatusCode::OK_200, res->status);
|
EXPECT_EQ(StatusCode::OK_200, res->status);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -306,6 +308,7 @@ template <typename T> void KeepAliveTest(T &cli, bool basic) {
|
|||||||
|
|
||||||
for (auto path : paths) {
|
for (auto path : paths) {
|
||||||
auto res = cli.Get(path.c_str());
|
auto res = cli.Get(path.c_str());
|
||||||
|
ASSERT_TRUE(res != nullptr);
|
||||||
auto body = normalizeJson(res->body);
|
auto body = normalizeJson(res->body);
|
||||||
EXPECT_TRUE(body.find("\"authenticated\":true") != std::string::npos);
|
EXPECT_TRUE(body.find("\"authenticated\":true") != std::string::npos);
|
||||||
EXPECT_TRUE(body.find("\"user\":\"hello\"") != std::string::npos);
|
EXPECT_TRUE(body.find("\"user\":\"hello\"") != std::string::npos);
|
||||||
@@ -317,6 +320,7 @@ template <typename T> void KeepAliveTest(T &cli, bool basic) {
|
|||||||
int count = 10;
|
int count = 10;
|
||||||
while (count--) {
|
while (count--) {
|
||||||
auto res = cli.Get("/get");
|
auto res = cli.Get("/get");
|
||||||
|
ASSERT_TRUE(res != nullptr);
|
||||||
EXPECT_EQ(StatusCode::OK_200, res->status);
|
EXPECT_EQ(StatusCode::OK_200, res->status);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user