summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin Harwell <kharwell@digium.com>2014-06-06 20:45:05 +0000
committerKevin Harwell <kharwell@digium.com>2014-06-06 20:45:05 +0000
commit4308aa5648ef4d7332dd14f920b944b0806ec8fb (patch)
treeab0982b62519383d742d8929eeab20d71fb20320
parent5510e3c699a6f0e6318bbfe4f27b241f42e4c2dc (diff)
core uri: Custom uri parsing error when no query parameters
If using the custom URI parsing code (not external uriparser lib) and there was no query parameters the resulting pointer would be NULL and then an attempt was made to subtract from it. The pointer is now set to a valid value if there is no query parameter(s). Also, in the 'ast_uri_make_host_with_port' function when setting the terminator on the resulting string it was writing it one past the end of allocated memory. It now writes the string terminator appropriately. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@415358 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-rw-r--r--main/uri.c6
-rw-r--r--tests/test_websocket_client.c2
2 files changed, 5 insertions, 3 deletions
diff --git a/main/uri.c b/main/uri.c
index 6642d843b..be1136fe6 100644
--- a/main/uri.c
+++ b/main/uri.c
@@ -229,6 +229,8 @@ struct ast_uri *ast_uri_parse(const char *uri)
if ((p = strchr(uri, '?'))) {
query = p + 1;
size_query = strlen(query) + 1;
+ } else {
+ p = uri + strlen(uri);
}
if (!host) {
@@ -313,9 +315,9 @@ char *ast_uri_make_host_with_port(const struct ast_uri *uri)
if (ast_uri_port(uri)) {
res[host_size] = ':';
memcpy(res + host_size + 1,
- ast_uri_port(uri), port_size);
+ ast_uri_port(uri), port_size - 1);
}
- res[host_size + port_size + 1] = '\0';
+ res[host_size + port_size] = '\0';
return res;
}
diff --git a/tests/test_websocket_client.c b/tests/test_websocket_client.c
index e104ed825..726ee1cfc 100644
--- a/tests/test_websocket_client.c
+++ b/tests/test_websocket_client.c
@@ -41,7 +41,7 @@ ASTERISK_FILE_VERSION(__FILE__, "")
#include "asterisk/http_websocket.h"
#define CATEGORY "/res/websocket/"
-#define REMOTE_URL "ws://localhost:8088/ws"
+#define REMOTE_URL "ws://127.0.0.1:8088/ws"
AST_TEST_DEFINE(websocket_client_create_and_connect)
{