Skip to content

Commit 4569fff

Browse files
aalkinclaude
andcommitted
Free encoded websocket chunks in test_HTTPParser
The buffers produced by encode_websocket_frames are malloc'ed and were never released. Free them at the end of each test block. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 parent 517b4da commit 4569fff

1 file changed

Lines changed: 7 additions & 0 deletions

File tree

‎Framework/Core/test/test_HTTPParser.cxx‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,7 @@ TEST_CASE("HTTPParser1")
188188
decode_websocket(encoded[0].base, encoded[0].len, handler);
189189
REQUIRE(handler.mSize[0] == strlen(buffer) + 1);
190190
REQUIRE(handler.mFrame[0].substr(0, handler.mSize[0] - 1) == std::string(buffer));
191+
std::ranges::for_each(encoded, [](auto& buf) { free(buf.base); });
191192
}
192193
{
193194
// WebSocket multiple frame encoding / decoding
@@ -216,6 +217,7 @@ TEST_CASE("HTTPParser1")
216217
REQUIRE(handler.mSize.size() == 2);
217218
REQUIRE(handler.mFrame[0].substr(0, handler.mSize[0] - 1) == std::string(buffer));
218219
REQUIRE(handler.mFrame[1].substr(0, handler.mSize[1] - 1) == std::string(buffer2));
220+
std::ranges::for_each(encoded, [](auto& buf) { free(buf.base); });
219221
}
220222
{
221223
// Decode a frame which is split in two.
@@ -230,6 +232,7 @@ TEST_CASE("HTTPParser1")
230232
REQUIRE(handler.mFrame.size() == 1);
231233
REQUIRE(handler.mSize.size() == 1);
232234
REQUIRE(handler.mFrame[0].substr(0, handler.mSize[0] - 1) == std::string(buffer));
235+
std::ranges::for_each(encoded, [](auto& buf) { free(buf.base); });
233236
}
234237
{
235238
// Decode a long frame which is split in two.
@@ -244,6 +247,7 @@ TEST_CASE("HTTPParser1")
244247
REQUIRE(handler.mFrame.size() == 1);
245248
REQUIRE(handler.mSize.size() == 1);
246249
REQUIRE(handler.mFrame[0].substr(0, handler.mSize[0] - 1) == std::string(buffer));
250+
std::ranges::for_each(encoded, [](auto& buf) { free(buf.base); });
247251
}
248252
{
249253
// WebSocket multiple frame encoding / decoding, long frames
@@ -261,6 +265,7 @@ TEST_CASE("HTTPParser1")
261265
REQUIRE(handler.mSize.size() == 2);
262266
REQUIRE(handler.mFrame[0].substr(0, handler.mSize[0] - 1) == std::string(buffer));
263267
REQUIRE(handler.mFrame[1].substr(0, handler.mSize[1] - 1) == std::string(buffer2));
268+
std::ranges::for_each(encoded, [](auto& buf) { free(buf.base); });
264269
}
265270
{
266271
// Decode a long frame which is split in two, after the first byte.
@@ -283,6 +288,7 @@ TEST_CASE("HTTPParser1")
283288
REQUIRE(handler.mSize.size() == 1);
284289
REQUIRE(handler.mFrame[0].substr(0, handler.mSize[0] - 1) == std::string(buffer));
285290
}
291+
std::ranges::for_each(encoded, [](auto& buf) { free(buf.base); });
286292
}
287293
{
288294
// Decode a long frame which is split in two, after the first byte.
@@ -313,6 +319,7 @@ TEST_CASE("HTTPParser1")
313319
REQUIRE(handler.mFrame[0].substr(0, handler.mSize[0] - 1) == std::string(buffer));
314320
}
315321
}
322+
std::ranges::for_each(encoded, [](auto& buf) { free(buf.base); });
316323
}
317324
{
318325
std::string checkRequest =

0 commit comments

Comments
 (0)