[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnunet] branch master updated: -fixes memory leaks with message body de
From: |
gnunet |
Subject: |
[gnunet] branch master updated: -fixes memory leaks with message body decoding |
Date: |
Mon, 15 Nov 2021 11:18:46 +0100 |
This is an automated email from the git hooks/post-receive script.
thejackimonster pushed a commit to branch master
in repository gnunet.
The following commit(s) were added to refs/heads/master by this push:
new 84a1ac1ba -fixes memory leaks with message body decoding
84a1ac1ba is described below
commit 84a1ac1baf0cdec49a2600f1872337612233ed01
Author: TheJackiMonster <thejackimonster@gmail.com>
AuthorDate: Mon Nov 15 11:18:39 2021 +0100
-fixes memory leaks with message body decoding
Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>
---
src/messenger/gnunet-service-messenger.c | 8 +++++---
src/messenger/gnunet-service-messenger_tunnel.c | 8 +++++---
src/messenger/messenger_api.c | 3 +++
src/messenger/messenger_api_message.c | 8 ++++++++
src/messenger/messenger_api_message.h | 8 ++++++++
5 files changed, 29 insertions(+), 6 deletions(-)
diff --git a/src/messenger/gnunet-service-messenger.c
b/src/messenger/gnunet-service-messenger.c
index 989157ceb..a994e16ee 100644
--- a/src/messenger/gnunet-service-messenger.c
+++ b/src/messenger/gnunet-service-messenger.c
@@ -227,10 +227,10 @@ check_for_message:
if (GNUNET_YES != decode_message (&message, msg_length, msg_buffer,
GNUNET_NO, NULL))
return GNUNET_NO;
- if (GNUNET_YES != filter_message_sending(&message))
- return GNUNET_NO;
+ const int allowed = filter_message_sending(&message);
- return GNUNET_OK;
+ cleanup_message(&message);
+ return GNUNET_YES == allowed? GNUNET_OK : GNUNET_NO;
}
static void
@@ -278,6 +278,8 @@ handle_send_message (void *cls,
GNUNET_MESSENGER_name_of_kind (message.header.kind), GNUNET_h2s
(key));
end_handling:
+ cleanup_message(&message);
+
GNUNET_SERVICE_client_continue (msg_client->client);
}
diff --git a/src/messenger/gnunet-service-messenger_tunnel.c
b/src/messenger/gnunet-service-messenger_tunnel.c
index fdd6429e6..c21f298b3 100644
--- a/src/messenger/gnunet-service-messenger_tunnel.c
+++ b/src/messenger/gnunet-service-messenger_tunnel.c
@@ -176,6 +176,9 @@ handle_tunnel_message (void *cls, const struct
GNUNET_MessageHeader *header)
{
struct GNUNET_MESSENGER_SrvTunnel *tunnel = cls;
+ if (!tunnel)
+ return;
+
const uint16_t length = ntohs (header->size) - sizeof(*header);
const char *buffer = (const char*) &header[1];
@@ -190,9 +193,6 @@ handle_tunnel_message (void *cls, const struct
GNUNET_MessageHeader *header)
GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Got message of kind: %s!\n",
GNUNET_MESSENGER_name_of_kind(message.header.kind));
- if (!tunnel)
- return;
-
const int new_message = update_room_message (
tunnel->room, copy_message (&message), &hash
);
@@ -226,6 +226,8 @@ handle_tunnel_message (void *cls, const struct
GNUNET_MessageHeader *header)
}
receive_done:
+ cleanup_message(&message);
+
GNUNET_CADET_receive_done (tunnel->channel);
}
diff --git a/src/messenger/messenger_api.c b/src/messenger/messenger_api.c
index ef6244e19..c9b143662 100644
--- a/src/messenger/messenger_api.c
+++ b/src/messenger/messenger_api.c
@@ -214,6 +214,7 @@ check_recv_message (void *cls,
if (GNUNET_YES != decode_message (&message, length, buffer, GNUNET_YES,
NULL))
return GNUNET_NO;
+ cleanup_message(&message);
return GNUNET_OK;
}
@@ -259,6 +260,8 @@ handle_recv_message (void *cls,
}
else
GNUNET_log(GNUNET_ERROR_TYPE_ERROR, "Room not found\n");
+
+ cleanup_message(&message);
}
static void
diff --git a/src/messenger/messenger_api_message.c
b/src/messenger/messenger_api_message.c
index 05bf654fb..4e64cc22f 100644
--- a/src/messenger/messenger_api_message.c
+++ b/src/messenger/messenger_api_message.c
@@ -125,6 +125,14 @@ destroy_message_body (enum GNUNET_MESSENGER_MessageKind
kind,
}
}
+void
+cleanup_message (struct GNUNET_MESSENGER_Message *message)
+{
+ GNUNET_assert(message);
+
+ destroy_message_body (message->header.kind, &(message->body));
+}
+
void
destroy_message (struct GNUNET_MESSENGER_Message *message)
{
diff --git a/src/messenger/messenger_api_message.h
b/src/messenger/messenger_api_message.h
index 6aebf4014..21161c134 100644
--- a/src/messenger/messenger_api_message.h
+++ b/src/messenger/messenger_api_message.h
@@ -61,6 +61,14 @@ create_message (enum GNUNET_MESSENGER_MessageKind kind);
struct GNUNET_MESSENGER_Message*
copy_message (const struct GNUNET_MESSENGER_Message *message);
+/**
+ * Frees the messages body memory.
+ *
+ * @param[in/out] message Message
+ */
+void
+cleanup_message (struct GNUNET_MESSENGER_Message *message);
+
/**
* Destroys a message and frees its memory fully.
*
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gnunet] branch master updated: -fixes memory leaks with message body decoding,
gnunet <=