aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorBryce Anderson <bryce.anderson22@gmail.com>2015-04-30 20:56:28 -0400
committerBryce Anderson <bryce.anderson22@gmail.com>2015-04-30 20:56:28 -0400
commit243995f36f4ee40aa88c1d29b976b944a3d1ac74 (patch)
treeaea8aa1abd9466db3bf249bc8d937a97897d7314 /tests
parentc94fc46a7a7b8a2947e3625edbfd5ee2c4ce9817 (diff)
downloadcrow-243995f36f4ee40aa88c1d29b976b944a3d1ac74.tar.gz
crow-243995f36f4ee40aa88c1d29b976b944a3d1ac74.zip
Fix memory error and invalid param when no params are present
Also added a unit test that fails with the previous behavior. Note that `-fsanitize=address` exposes the invalid memory access in qs_parse.
Diffstat (limited to 'tests')
-rw-r--r--tests/unittest.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/tests/unittest.cpp b/tests/unittest.cpp
index 460abac..e1c440b 100644
--- a/tests/unittest.cpp
+++ b/tests/unittest.cpp
@@ -1,6 +1,7 @@
//#define CROW_ENABLE_LOGGING
#define CROW_ENABLE_DEBUG
#include <iostream>
+#include <sstream>
#include <vector>
#include "settings.h"
#undef CROW_LOG_LEVEL
@@ -943,6 +944,20 @@ TEST(simple_url_params)
asio::io_service is;
std::string sendmsg;
+ // check empty params
+ sendmsg = "GET /params\r\n\r\n";
+ {
+ asio::ip::tcp::socket c(is);
+ c.connect(asio::ip::tcp::endpoint(asio::ip::address::from_string("127.0.0.1"), 45451));
+ c.send(asio::buffer(sendmsg));
+ c.receive(asio::buffer(buf, 2048));
+ c.close();
+
+ stringstream ss;
+ ss << last_url_params;
+
+ ASSERT_EQUAL("[ ]", ss.str());
+ }
// check single presence
sendmsg = "GET /params?foobar\r\n\r\n";
{