diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2019-12-21 15:57:00 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2019-12-21 15:57:00 +0100 |
commit | 0d3017abc39d14d4c8356f54af81aa4dbb0f4e79 (patch) | |
tree | 21549b4ac2db1c78917656be9233bdf2504e9d25 /src/libmbim-glib | |
parent | a5089b41e442bbd9fedcb51e976b3cbdab360f32 (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.c | 17 |
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; |