From bb272ad8bd5e52ea66593cc6f6d15dfc104d16f3 Mon Sep 17 00:00:00 2001
From: Jakob Olsson <jakobols@kth.se>
Date: Tue, 22 May 2018 11:29:31 +0200
Subject: [PATCH] fix freeing stack memory during post requests
---
dongle_network.c | 5 ++---
libmobile.c | 9 ++++-----
2 files changed, 6 insertions(+), 8 deletions(-)
diff --git a/dongle_network.c b/dongle_network.c
index d0a183d..b2568bd 100644
--- a/dongle_network.c
+++ b/dongle_network.c
@@ -26,7 +26,6 @@ int get_signal_strength(struct ubus_context *ctx, struct ubus_object *obj,
ip_addr = (char *)blobmsg_data(tb[IP]);
response = mobile_get_rssi(ip_addr);
-
if (!response)
goto fail_unknown;
@@ -51,8 +50,8 @@ int connect_network(struct ubus_context *ctx, struct ubus_object *obj,
goto fail_argument;
}
ip_addr = (char *)blobmsg_data(tb[IP]);
- response = mobile_connect_network(ip_addr);
+ response = mobile_connect_network(ip_addr);
if (!response)
goto fail_unknown;
@@ -78,8 +77,8 @@ int disconnect(struct ubus_context *ctx, struct ubus_object *obj,
goto fail_argument;
}
ip_addr = (char *)blobmsg_data(tb[IP]);
- response = mobile_disconnect_network(ip_addr);
+ response = mobile_disconnect_network(ip_addr);
if (!response)
goto fail_unknown;
diff --git a/libmobile.c b/libmobile.c
index 6d530dc..aac4fc0 100644
--- a/libmobile.c
+++ b/libmobile.c
@@ -299,6 +299,7 @@ static struct json_object *prepare_request(char *ip_addr, char *query, int optio
else if (option == GET) {
query = get_query_wrapper(ip_addr, query);
rv = perform_get_request(ip_addr, curl, query, &str);
+ free(query);
} else
goto fail_request;
@@ -308,7 +309,6 @@ static struct json_object *prepare_request(char *ip_addr, char *query, int optio
}
if (!str.ptr)
goto fail_ptr;
-
//debug_print("%s\n", str.ptr);
parsed_response = json_tokener_parse(str.ptr);
if (!parsed_response) {
@@ -316,7 +316,6 @@ static struct json_object *prepare_request(char *ip_addr, char *query, int optio
goto fail_json;
}
- free(query);
curl_cleaner(curl);
free(str.ptr);
return parsed_response;
@@ -380,12 +379,12 @@ finished:
struct json_object *mobile_connect_network(char *ip_addr)
{
- return prepare_request(ip_addr, "isTest=false&goformId=CONNECT_NETWORK", POST);
+ return prepare_request(ip_addr, "isTest=false¬Callback=true&goformId=CONNECT_NETWORK", POST);
}
struct json_object *mobile_disconnect_network(char *ip_addr)
{
- return prepare_request(ip_addr, "isTest=false&goformId=DISCONNECT_NETWORK", POST);
+ return prepare_request(ip_addr, "isTest=false¬Callback=true&goformId=DISCONNECT_NETWORK", POST);
}
struct json_object *mobile_delete_apn(char *ip_addr, char *name)
@@ -475,7 +474,7 @@ struct json_object *mobile_get_pin_status(char *ip_addr)
struct json_object *mobile_get_rssi(char *ip_addr)
{
- return prepare_request(ip_addr, "rssi", GET);
+ return prepare_request(ip_addr, "lte_rssi", GET);
}
struct json_object *mobile_get_modem_state(char *ip_addr)
--
GitLab