[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnunet] branch master updated: MESSENGER: Fix allocations in decoding o
From: |
gnunet |
Subject: |
[gnunet] branch master updated: MESSENGER: Fix allocations in decoding of messages |
Date: |
Mon, 24 Jun 2024 19:39:07 +0200 |
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 d6b345031 MESSENGER: Fix allocations in decoding of messages
d6b345031 is described below
commit d6b345031ec2389b2a498b049bb13b624dd1952e
Author: Jacki <jacki@thejackimonster.de>
AuthorDate: Mon Jun 24 19:38:55 2024 +0200
MESSENGER: Fix allocations in decoding of messages
Signed-off-by: Jacki <jacki@thejackimonster.de>
---
src/service/messenger/messenger_api_message.c | 72 ++++++++++++++++++++-------
1 file changed, 54 insertions(+), 18 deletions(-)
diff --git a/src/service/messenger/messenger_api_message.c
b/src/service/messenger/messenger_api_message.c
index 52a858b1d..dee5d8572 100644
--- a/src/service/messenger/messenger_api_message.c
+++ b/src/service/messenger/messenger_api_message.c
@@ -600,9 +600,11 @@ encode_message_body (enum GNUNET_MESSENGER_MessageKind
kind,
break;
case GNUNET_MESSENGER_KIND_PRIVATE:
encode_step (buffer, offset, &(body->privacy.key));
- encode_step_ext (buffer, offset, body->privacy.data, min (length - offset,
- body->privacy.
- length));
+
+ if (body->privacy.data)
+ encode_step_ext (buffer, offset, body->privacy.data, min (length -
offset,
+ body->privacy.
+ length));
break;
case GNUNET_MESSENGER_KIND_DELETE:
encode_step (buffer, offset, &(body->deletion.hash));
@@ -622,14 +624,17 @@ encode_message_body (enum GNUNET_MESSENGER_MessageKind
kind,
case GNUNET_MESSENGER_KIND_TRANSCRIPT:
encode_step (buffer, offset, &(body->transcript.hash));
encode_step_key (buffer, offset, &(body->transcript.key), length);
- encode_step_ext (buffer, offset, body->transcript.data, min (length
- - offset,
- body->
- transcript.
- length));
+
+ if (body->transcript.data)
+ encode_step_ext (buffer, offset, body->transcript.data, min (length
+ - offset,
+ body->
+ transcript.
+ length));
break;
case GNUNET_MESSENGER_KIND_TAG:
encode_step (buffer, offset, &(body->tag.hash));
+
if (body->tag.tag)
encode_step_ext (buffer, offset, body->tag.tag, min (length - offset,
strlen (
@@ -644,9 +649,11 @@ encode_message_body (enum GNUNET_MESSENGER_MessageKind
kind,
break;
case GNUNET_MESSENGER_KIND_TALK:
encode_step (buffer, offset, &(body->talk.discourse));
- encode_step_ext (buffer, offset, body->talk.data, min (length - offset,
- body->talk.
- length));
+
+ if (body->talk.data)
+ encode_step_ext (buffer, offset, body->talk.data, min (length - offset,
+ body->talk.
+ length));
break;
default:
break;
@@ -830,8 +837,18 @@ decode_message_body (enum GNUNET_MESSENGER_MessageKind
*kind,
case GNUNET_MESSENGER_KIND_PRIVATE:
decode_step (buffer, offset, &(body->privacy.key));
- body->privacy.length = (length - offset);
- decode_step_malloc (buffer, offset, body->privacy.data, length - offset,
0);
+ if (length > offset)
+ {
+ body->privacy.length = (length - offset);
+ decode_step_malloc (buffer, offset, body->privacy.data, length - offset,
+ 0);
+ }
+ else
+ {
+ body->privacy.length = 0;
+ body->privacy.data = NULL;
+ }
+
break;
case GNUNET_MESSENGER_KIND_DELETE:
decode_step (buffer, offset, &(body->deletion.hash));
@@ -855,9 +872,18 @@ decode_message_body (enum GNUNET_MESSENGER_MessageKind
*kind,
decode_step (buffer, offset, &(body->transcript.hash));
decode_step_key (buffer, offset, &(body->transcript.key), length);
- body->transcript.length = (length - offset);
- decode_step_malloc (buffer, offset, body->transcript.data, length - offset,
- 0);
+ if (length > offset)
+ {
+ body->transcript.length = (length - offset);
+ decode_step_malloc (buffer, offset, body->transcript.data,
+ length - offset, 0);
+ }
+ else
+ {
+ body->transcript.length = 0;
+ body->transcript.data = NULL;
+ }
+
break;
case GNUNET_MESSENGER_KIND_TAG:
decode_step (buffer, offset, &(body->tag.hash));
@@ -876,8 +902,18 @@ decode_message_body (enum GNUNET_MESSENGER_MessageKind
*kind,
case GNUNET_MESSENGER_KIND_TALK:
decode_step (buffer, offset, &(body->talk.discourse));
- body->talk.length = (length - offset);
- decode_step_malloc (buffer, offset, body->talk.data, length - offset, 0);
+ if (length > offset)
+ {
+ body->talk.length = (length - offset);
+ decode_step_malloc (buffer, offset, body->talk.data, length - offset,
+ 0);
+ }
+ else
+ {
+ body->talk.length = 0;
+ body->talk.data = NULL;
+ }
+
break;
default:
*kind = GNUNET_MESSENGER_KIND_UNKNOWN;
--
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: MESSENGER: Fix allocations in decoding of messages,
gnunet <=