summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Chan <benchan@chromium.org>2014-02-27 10:23:40 -0800
committerAleksander Morgado <aleksander@aleksander.es>2014-02-28 09:04:02 +0100
commit2555c13a887f9a14e0d263c98189891e25a96c85 (patch)
tree99ee48a9d74efab25ae5edee9c783daeea9f5d2b
parentb358180ac684ac37e15e3a6c5eab31dda10d2a81 (diff)
downloadlibmbim-2555c13a887f9a14e0d263c98189891e25a96c85.tar.gz
mbimcli: check status code in command-done message before parsing response
This patch adds missing mbim_message_command_done_get_result() checks in mbimcli to ensure that the status code in a command-done message reports no error before parsing further parsing the response. It also adds missing mbim_message_unref() calls to ensure that the response is freed in case of an error.
-rw-r--r--src/mbimcli/mbimcli-basic-connect.c34
-rw-r--r--src/mbimcli/mbimcli-ms-firmware-id.c4
-rw-r--r--src/mbimcli/mbimcli-phonebook.c16
3 files changed, 45 insertions, 9 deletions
diff --git a/src/mbimcli/mbimcli-basic-connect.c b/src/mbimcli/mbimcli-basic-connect.c
index a73da19..e90a767 100644
--- a/src/mbimcli/mbimcli-basic-connect.c
+++ b/src/mbimcli/mbimcli-basic-connect.c
@@ -265,9 +265,11 @@ query_device_caps_ready (MbimDevice *device,
gchar *hardware_info;
response = mbim_device_command_finish (device, res, &error);
- if (!response) {
+ if (!response || !mbim_message_command_done_get_result (response, &error)) {
g_printerr ("error: operation failed: %s\n", error->message);
g_error_free (error);
+ if (response)
+ mbim_message_unref (response);
shutdown (FALSE);
return;
}
@@ -359,9 +361,11 @@ query_subscriber_ready_status_ready (MbimDevice *device,
gchar *telephone_numbers_str;
response = mbim_device_command_finish (device, res, &error);
- if (!response) {
+ if (!response || !mbim_message_command_done_get_result (response, &error)) {
g_printerr ("error: operation failed: %s\n", error->message);
g_error_free (error);
+ if (response)
+ mbim_message_unref (response);
shutdown (FALSE);
return;
}
@@ -420,9 +424,11 @@ query_radio_state_ready (MbimDevice *device,
const gchar *software_radio_state_str;
response = mbim_device_command_finish (device, res, &error);
- if (!response) {
+ if (!response || !mbim_message_command_done_get_result (response, &error)) {
g_printerr ("error: operation failed: %s\n", error->message);
g_error_free (error);
+ if (response)
+ mbim_message_unref (response);
shutdown (FALSE);
return;
}
@@ -463,9 +469,11 @@ query_device_services_ready (MbimDevice *device,
guint32 max_dss_sessions;
response = mbim_device_command_finish (device, res, &error);
- if (!response) {
+ if (!response || !mbim_message_command_done_get_result (response, &error)) {
g_printerr ("error: operation failed: %s\n", error->message);
g_error_free (error);
+ if (response)
+ mbim_message_unref (response);
shutdown (FALSE);
return;
}
@@ -556,6 +564,8 @@ pin_ready (MbimDevice *device,
if (!response || !mbim_message_command_done_get_result (response, &error)) {
g_printerr ("error: operation failed: %s\n", error->message);
g_error_free (error);
+ if (response)
+ mbim_message_unref (response);
shutdown (FALSE);
return;
}
@@ -658,6 +668,8 @@ connect_ready (MbimDevice *device,
if (!response || !mbim_message_command_done_get_result (response, &error)) {
g_printerr ("error: operation failed: %s\n", error->message);
g_error_free (error);
+ if (response)
+ mbim_message_unref (response);
shutdown (FALSE);
return;
}
@@ -787,6 +799,8 @@ home_provider_ready (MbimDevice *device,
if (!response || !mbim_message_command_done_get_result (response, &error)) {
g_printerr ("error: operation failed: %s\n", error->message);
g_error_free (error);
+ if (response)
+ mbim_message_unref (response);
shutdown (FALSE);
return;
}
@@ -841,6 +855,8 @@ preferred_providers_ready (MbimDevice *device,
if (!response || !mbim_message_command_done_get_result (response, &error)) {
g_printerr ("error: operation failed: %s\n", error->message);
g_error_free (error);
+ if (response)
+ mbim_message_unref (response);
shutdown (FALSE);
return;
}
@@ -909,6 +925,8 @@ visible_providers_ready (MbimDevice *device,
if (!response || !mbim_message_command_done_get_result (response, &error)) {
g_printerr ("error: operation failed: %s\n", error->message);
g_error_free (error);
+ if (response)
+ mbim_message_unref (response);
shutdown (FALSE);
return;
}
@@ -986,6 +1004,8 @@ register_state_ready (MbimDevice *device,
if (!response || !mbim_message_command_done_get_result (response, &error)) {
g_printerr ("error: operation failed: %s\n", error->message);
g_error_free (error);
+ if (response)
+ mbim_message_unref (response);
shutdown (FALSE);
return;
}
@@ -1064,6 +1084,8 @@ signal_state_ready (MbimDevice *device,
if (!response || !mbim_message_command_done_get_result (response, &error)) {
g_printerr ("error: operation failed: %s\n", error->message);
g_error_free (error);
+ if (response)
+ mbim_message_unref (response);
shutdown (FALSE);
return;
}
@@ -1125,6 +1147,8 @@ packet_service_ready (MbimDevice *device,
if (!response || !mbim_message_command_done_get_result (response, &error)) {
g_printerr ("error: operation failed: %s\n", error->message);
g_error_free (error);
+ if (response)
+ mbim_message_unref (response);
shutdown (FALSE);
return;
}
@@ -1195,6 +1219,8 @@ packet_statistics_ready (MbimDevice *device,
if (!response || !mbim_message_command_done_get_result (response, &error)) {
g_printerr ("error: operation failed: %s\n", error->message);
g_error_free (error);
+ if (response)
+ mbim_message_unref (response);
shutdown (FALSE);
return;
}
diff --git a/src/mbimcli/mbimcli-ms-firmware-id.c b/src/mbimcli/mbimcli-ms-firmware-id.c
index b295795..3563684 100644
--- a/src/mbimcli/mbimcli-ms-firmware-id.c
+++ b/src/mbimcli/mbimcli-ms-firmware-id.c
@@ -116,9 +116,11 @@ query_firmware_id_ready (MbimDevice *device,
gchar *firmware_id_str;
response = mbim_device_command_finish (device, res, &error);
- if (!response) {
+ if (!response || !mbim_message_command_done_get_result (response, &error)) {
g_printerr ("error: operation failed: %s\n", error->message);
g_error_free (error);
+ if (response)
+ mbim_message_unref (response);
shutdown (FALSE);
return;
}
diff --git a/src/mbimcli/mbimcli-phonebook.c b/src/mbimcli/mbimcli-phonebook.c
index 1c124e2..0a544d6 100644
--- a/src/mbimcli/mbimcli-phonebook.c
+++ b/src/mbimcli/mbimcli-phonebook.c
@@ -201,9 +201,11 @@ set_phonebook_write_ready (MbimDevice *device,
GError *error = NULL;
response = mbim_device_command_finish (device, res, &error);
- if (!response) {
+ if (!response || !mbim_message_command_done_get_result (response, &error)) {
g_printerr ("error: operation failed: %s\n", error->message);
g_error_free (error);
+ if (response)
+ mbim_message_unref (response);
shutdown (FALSE);
return;
}
@@ -229,9 +231,11 @@ set_phonebook_delete_ready (MbimDevice *device,
GError *error = NULL;
response = mbim_device_command_finish (device, res, &error);
- if (!response) {
+ if (!response || !mbim_message_command_done_get_result (response, &error)) {
g_printerr ("error: operation failed: %s\n", error->message);
g_error_free (error);
+ if (response)
+ mbim_message_unref (response);
shutdown (FALSE);
return;
}
@@ -259,9 +263,11 @@ query_phonebook_read_ready (MbimDevice *device,
gint i = 0;
response = mbim_device_command_finish (device, res, &error);
- if (!response) {
+ if (!response || !mbim_message_command_done_get_result (response, &error)) {
g_printerr ("error: operation failed: %s\n", error->message);
g_error_free (error);
+ if (response)
+ mbim_message_unref (response);
shutdown (FALSE);
return;
}
@@ -305,9 +311,11 @@ query_phonebook_configuration_ready (MbimDevice *device,
guint32 max_name;
response = mbim_device_command_finish (device, res, &error);
- if (!response) {
+ if (!response || !mbim_message_command_done_get_result (response, &error)) {
g_printerr ("error: operation failed: %s\n", error->message);
g_error_free (error);
+ if (response)
+ mbim_message_unref (response);
shutdown (FALSE);
return;
}