summaryrefslogtreecommitdiff
path: root/src/libmbim-glib
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2019-12-21 15:57:00 +0100
committerAleksander Morgado <aleksander@aleksander.es>2019-12-21 15:57:00 +0100
commit0d3017abc39d14d4c8356f54af81aa4dbb0f4e79 (patch)
tree21549b4ac2db1c78917656be9233bdf2504e9d25 /src/libmbim-glib
parenta5089b41e442bbd9fedcb51e976b3cbdab360f32 (diff)
libmbim-glib,proxy: validate service subscribe request before parsing
Diffstat (limited to 'src/libmbim-glib')
-rw-r--r--src/libmbim-glib/mbim-proxy-helpers.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/libmbim-glib/mbim-proxy-helpers.c b/src/libmbim-glib/mbim-proxy-helpers.c
index f4107d0..e3462db 100644
--- a/src/libmbim-glib/mbim-proxy-helpers.c
+++ b/src/libmbim-glib/mbim-proxy-helpers.c
@@ -26,6 +26,7 @@
#include "mbim-proxy-helpers.h"
#include "mbim-message-private.h"
#include "mbim-message.h"
+#include "mbim-error-types.h"
#include "mbim-cid.h"
#include "mbim-uuid.h"
@@ -144,6 +145,22 @@ _mbim_proxy_helper_service_subscribe_request_parse (MbimMessage *message,
g_assert (message != NULL);
g_assert (out_size != NULL);
+ if (mbim_message_get_message_type (message) != MBIM_MESSAGE_TYPE_COMMAND) {
+ g_set_error (error,
+ MBIM_CORE_ERROR,
+ MBIM_CORE_ERROR_INVALID_MESSAGE,
+ "Message is not a request");
+ return FALSE;
+ }
+
+ if (!mbim_message_command_get_raw_information_buffer (message, NULL)) {
+ g_set_error (error,
+ MBIM_CORE_ERROR,
+ MBIM_CORE_ERROR_INVALID_MESSAGE,
+ "Message does not have information buffer");
+ return FALSE;
+ }
+
if (!_mbim_message_read_guint32 (message, offset, &element_count, error))
return NULL;