diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2019-11-25 13:33:45 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2019-11-25 15:06:18 +0100 |
commit | 404de179081c52ae310adae16788fb5f68e7d30a (patch) | |
tree | fe43a07ec53b5f75dfe9cf8d3125e5176b2bb7c3 | |
parent | d08dd6f0071f94838c5f6fd78413c7f51461ba8e (diff) |
libmbim-glib,message: allow NULL length output when getting information buffer
-rw-r--r-- | src/libmbim-glib/mbim-message.c | 39 | ||||
-rw-r--r-- | src/libmbim-glib/mbim-message.h | 6 |
2 files changed, 27 insertions, 18 deletions
diff --git a/src/libmbim-glib/mbim-message.c b/src/libmbim-glib/mbim-message.c index c795784..5bb0ebe 100644 --- a/src/libmbim-glib/mbim-message.c +++ b/src/libmbim-glib/mbim-message.c @@ -2047,7 +2047,7 @@ mbim_message_command_get_command_type (const MbimMessage *self) /** * mbim_message_command_get_raw_information_buffer: * @self: a #MbimMessage. - * @length: (out): return location for the size of the output buffer. + * @out_length: (out): return location for the size of the output buffer. * * Gets the information buffer of the %MBIM_MESSAGE_TYPE_COMMAND message. * @@ -2055,15 +2055,18 @@ mbim_message_command_get_command_type (const MbimMessage *self) */ const guint8 * mbim_message_command_get_raw_information_buffer (const MbimMessage *self, - guint32 *length) + guint32 *out_length) { + guint32 length; + g_return_val_if_fail (self != NULL, NULL); - g_return_val_if_fail (length != NULL, NULL); g_return_val_if_fail (MBIM_MESSAGE_GET_MESSAGE_TYPE (self) == MBIM_MESSAGE_TYPE_COMMAND, NULL); - *length = GUINT32_FROM_LE (((struct full_message *)(self->data))->message.command.buffer_length); + length = GUINT32_FROM_LE (((struct full_message *)(self->data))->message.command.buffer_length); + if (out_length) + *out_length = length; - return (*length > 0 ? + return (length > 0 ? ((struct full_message *)(self->data))->message.command.buffer : NULL); } @@ -2168,7 +2171,7 @@ mbim_message_command_done_get_result (const MbimMessage *self, /** * mbim_message_command_done_get_raw_information_buffer: * @self: a #MbimMessage. - * @length: (out): return location for the size of the output buffer. + * @out_length: (out): return location for the size of the output buffer. * * Gets the information buffer of the %MBIM_MESSAGE_TYPE_COMMAND_DONE message. * @@ -2176,15 +2179,18 @@ mbim_message_command_done_get_result (const MbimMessage *self, */ const guint8 * mbim_message_command_done_get_raw_information_buffer (const MbimMessage *self, - guint32 *length) + guint32 *out_length) { + guint32 length; + g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (MBIM_MESSAGE_GET_MESSAGE_TYPE (self) == MBIM_MESSAGE_TYPE_COMMAND_DONE, NULL); - g_return_val_if_fail (length != NULL, NULL); - *length = GUINT32_FROM_LE (((struct full_message *)(self->data))->message.command_done.buffer_length); + length = GUINT32_FROM_LE (((struct full_message *)(self->data))->message.command_done.buffer_length); + if (out_length) + *out_length = length; - return (*length > 0 ? + return (length > 0 ? ((struct full_message *)(self->data))->message.command_done.buffer : NULL); } @@ -2246,7 +2252,7 @@ mbim_message_indicate_status_get_cid (const MbimMessage *self) /** * mbim_message_indicate_status_get_raw_information_buffer: * @self: a #MbimMessage. - * @length: (out): return location for the size of the output buffer. + * @out_length: (out): return location for the size of the output buffer. * * Gets the information buffer of the %MBIM_MESSAGE_TYPE_INDICATE_STATUS message. * @@ -2254,15 +2260,18 @@ mbim_message_indicate_status_get_cid (const MbimMessage *self) */ const guint8 * mbim_message_indicate_status_get_raw_information_buffer (const MbimMessage *self, - guint32 *length) + guint32 *out_length) { + guint32 length; + g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (MBIM_MESSAGE_GET_MESSAGE_TYPE (self) == MBIM_MESSAGE_TYPE_INDICATE_STATUS, NULL); - g_return_val_if_fail (length != NULL, NULL); - *length = GUINT32_FROM_LE (((struct full_message *)(self->data))->message.indicate_status.buffer_length); + length = GUINT32_FROM_LE (((struct full_message *)(self->data))->message.indicate_status.buffer_length); + if (out_length) + *out_length = length; - return (*length > 0 ? + return (length > 0 ? ((struct full_message *)(self->data))->message.indicate_status.buffer : NULL); } diff --git a/src/libmbim-glib/mbim-message.h b/src/libmbim-glib/mbim-message.h index 02154b7..033cd16 100644 --- a/src/libmbim-glib/mbim-message.h +++ b/src/libmbim-glib/mbim-message.h @@ -191,7 +191,7 @@ const MbimUuid *mbim_message_command_get_service_id (const M guint32 mbim_message_command_get_cid (const MbimMessage *self); MbimMessageCommandType mbim_message_command_get_command_type (const MbimMessage *self); const guint8 *mbim_message_command_get_raw_information_buffer (const MbimMessage *self, - guint32 *length); + guint32 *out_length); /*****************************************************************************/ /* 'Command Done' message interface */ @@ -203,7 +203,7 @@ MbimStatusError mbim_message_command_done_get_status_code (const Mbi gboolean mbim_message_command_done_get_result (const MbimMessage *self, GError **error); const guint8 *mbim_message_command_done_get_raw_information_buffer (const MbimMessage *self, - guint32 *length); + guint32 *out_length); /*****************************************************************************/ /* 'Indicate Status' message interface */ @@ -212,7 +212,7 @@ MbimService mbim_message_indicate_status_get_service (const const MbimUuid *mbim_message_indicate_status_get_service_id (const MbimMessage *self); guint32 mbim_message_indicate_status_get_cid (const MbimMessage *self); const guint8 *mbim_message_indicate_status_get_raw_information_buffer (const MbimMessage *self, - guint32 *length); + guint32 *out_length); /*****************************************************************************/ /* Other helpers */ |