libgnunetchat

library for GNUnet Messenger
Log | Files | Refs | README | LICENSE

commit e661a0773351cd8416f47bd44a62485462c1b17b
parent 31060c1502ce34ebed3ceb0b8365ff58169d4db9
Author: TheJackiMonster <thejackimonster@gmail.com>
Date:   Sat, 30 Oct 2021 02:48:26 +0200

Fixed access violations with empty context of internal messages

Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>

Diffstat:
Msrc/gnunet_chat_lib.c | 17++++++-----------
1 file changed, 6 insertions(+), 11 deletions(-)

diff --git a/src/gnunet_chat_lib.c b/src/gnunet_chat_lib.c @@ -718,7 +718,7 @@ GNUNET_CHAT_message_get_timestamp (const struct GNUNET_CHAT_Message *message) const struct GNUNET_CHAT_Contact* GNUNET_CHAT_message_get_sender (const struct GNUNET_CHAT_Message *message) { - if (!message) + if ((!message) || (!(message->context))) return NULL; const struct GNUNET_MESSENGER_Contact *sender = GNUNET_MESSENGER_get_sender( @@ -768,12 +768,7 @@ GNUNET_CHAT_message_get_read_receipt (const struct GNUNET_CHAT_Message *message, GNUNET_CHAT_MessageReadReceiptCallback callback, void *cls) { - if ((!message) || (!(message->msg))) - return GNUNET_SYSERR; - - struct GNUNET_CHAT_Context *context = message->context; - - if (!context) + if ((!message) || (!(message->msg)) || (!(message->context))) return GNUNET_SYSERR; struct GNUNET_CHAT_MessageIterateReadReceipts it; @@ -782,7 +777,7 @@ GNUNET_CHAT_message_get_read_receipt (const struct GNUNET_CHAT_Message *message, it.cls = cls; return GNUNET_MESSENGER_iterate_members( - context->room, it_message_iterate_read_receipts, &it + message->context->room, it_message_iterate_read_receipts, &it ); } @@ -805,7 +800,7 @@ GNUNET_CHAT_message_get_text (const struct GNUNET_CHAT_Message *message) struct GNUNET_CHAT_File* GNUNET_CHAT_message_get_file (const struct GNUNET_CHAT_Message *message) { - if ((!message) || (!(message->msg))) + if ((!message) || (!(message->msg)) || (!(message->context))) return NULL; if (GNUNET_MESSENGER_KIND_FILE != message->msg->header.kind) @@ -821,7 +816,7 @@ GNUNET_CHAT_message_get_file (const struct GNUNET_CHAT_Message *message) struct GNUNET_CHAT_Invitation* GNUNET_CHAT_message_get_invitation (const struct GNUNET_CHAT_Message *message) { - if ((!message) || (!(message->msg))) + if ((!message) || (!(message->msg)) || (!(message->context))) return NULL; if (GNUNET_MESSENGER_KIND_INVITE != message->msg->header.kind) @@ -838,7 +833,7 @@ int GNUNET_CHAT_message_delete (const struct GNUNET_CHAT_Message *message, struct GNUNET_TIME_Relative delay) { - if ((!message) || (!(message->msg))) + if ((!message) || (!(message->msg)) || (!(message->context))) return GNUNET_SYSERR; struct GNUNET_MESSENGER_Message msg;