gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gnunet] branch master updated: MESSENGER: Support empty strings in mess


From: gnunet
Subject: [gnunet] branch master updated: MESSENGER: Support empty strings in message body
Date: Fri, 02 Feb 2024 01:08:28 +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 a6e2c4002 MESSENGER: Support empty strings in message body
a6e2c4002 is described below

commit a6e2c4002975befbb9a9ff96ee93f0f69dda3c7a
Author: TheJackiMonster <thejackimonster@gmail.com>
AuthorDate: Fri Feb 2 01:08:18 2024 +0100

    MESSENGER: Support empty strings in message body
    
    Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>
---
 src/service/messenger/messenger_api_message.c | 57 ++++++++++++++++-----------
 1 file changed, 35 insertions(+), 22 deletions(-)

diff --git a/src/service/messenger/messenger_api_message.c 
b/src/service/messenger/messenger_api_message.c
index d98938671..82228ed09 100644
--- a/src/service/messenger/messenger_api_message.c
+++ b/src/service/messenger/messenger_api_message.c
@@ -94,13 +94,16 @@ copy_message (const struct GNUNET_MESSENGER_Message 
*message)
   switch (message->header.kind)
   {
   case GNUNET_MESSENGER_KIND_NAME:
-    copy->body.name.name = GNUNET_strdup (message->body.name.name);
+    copy->body.name.name = message->body.name.name? GNUNET_strdup (
+      message->body.name.name) : NULL;
     break;
   case GNUNET_MESSENGER_KIND_TEXT:
-    copy->body.text.text = GNUNET_strdup (message->body.text.text);
+    copy->body.text.text = message->body.text.text? GNUNET_strdup (
+      message->body.text.text) : NULL;
     break;
   case GNUNET_MESSENGER_KIND_FILE:
-    copy->body.file.uri = GNUNET_strdup (message->body.file.uri);
+    copy->body.file.uri = message->body.file.uri? GNUNET_strdup (
+      message->body.file.uri) : NULL;
     break;
   case GNUNET_MESSENGER_KIND_PRIVATE:
     copy->body.privacy.data = copy->body.privacy.length ? GNUNET_malloc (
@@ -121,7 +124,8 @@ copy_message (const struct GNUNET_MESSENGER_Message 
*message)
     
     break;
   case GNUNET_MESSENGER_KIND_TAG:
-    copy->body.tag.tag = GNUNET_strdup (message->body.tag.tag);
+    copy->body.tag.tag = message->body.tag.tag? GNUNET_strdup (
+      message->body.tag.tag) : NULL;
     break;
   default:
     break;
@@ -146,7 +150,8 @@ destroy_message_body (enum GNUNET_MESSENGER_MessageKind 
kind,
       GNUNET_free (body->text.text);
     break;
   case GNUNET_MESSENGER_KIND_FILE:
-    GNUNET_free (body->file.uri);
+    if (body->file.uri)
+      GNUNET_free (body->file.uri);
     break;
   case GNUNET_MESSENGER_KIND_PRIVATE:
     GNUNET_free (body->privacy.data);
@@ -219,8 +224,8 @@ unfold_short_message (struct GNUNET_MESSENGER_ShortMessage 
*shortened,
 
   message->header.kind = shortened->kind;
 
-  GNUNET_memcpy (&(message->body), &(shortened->body), sizeof(struct
-                                                              
GNUNET_MESSENGER_MessageBody));
+  GNUNET_memcpy (&(message->body), &(shortened->body),
+                 sizeof(struct GNUNET_MESSENGER_MessageBody));
 }
 
 
@@ -333,7 +338,7 @@ get_message_body_size (enum GNUNET_MESSENGER_MessageKind 
kind,
     length += (body->text.text ? strlen (body->text.text) : 0);
     break;
   case GNUNET_MESSENGER_KIND_FILE:
-    length += strlen (body->file.uri);
+    length += (body->file.uri ? strlen (body->file.uri) : 0);
     break;
   case GNUNET_MESSENGER_KIND_PRIVATE:
     length += body->privacy.length;
@@ -380,9 +385,8 @@ get_short_message_size (const struct 
GNUNET_MESSENGER_ShortMessage *message,
 
   if (message)
     return minimum_size + get_message_body_kind_size (message->kind)
-           + (include_body == GNUNET_YES? get_message_body_size (message->kind,
-                                                                 
&(message->body))
-    : 0);
+           + (include_body == GNUNET_YES? 
+              get_message_body_size (message->kind, &(message->body)) : 0);
   else
     return minimum_size;
 }
@@ -523,9 +527,10 @@ encode_message_body (enum GNUNET_MESSENGER_MessageKind 
kind,
     encode_step (buffer, offset, &(body->file.key));
     encode_step (buffer, offset, &(body->file.hash));
     encode_step_ext (buffer, offset, body->file.name, sizeof(body->file.name));
-    encode_step_ext (buffer, offset, body->file.uri, min (length - offset,
-                                                          strlen (
-                                                            body->file.uri)));
+    if (body->file.uri)
+      encode_step_ext (buffer, offset, body->file.uri, min (length - offset,
+                                                            strlen (
+                                                              
body->file.uri)));
     break;
   case GNUNET_MESSENGER_KIND_PRIVATE:
     encode_step (buffer, offset, &(body->privacy.key));
@@ -608,8 +613,8 @@ encode_message (const struct GNUNET_MESSENGER_Message 
*message,
 
   encode_step (buffer, offset, &kind);
 
-  encode_message_body (message->header.kind, &(message->body), length, buffer,
-                       offset);
+  encode_message_body (message->header.kind, &(message->body), 
+                       length, buffer, offset);
 }
 
 
@@ -630,8 +635,7 @@ encode_short_message (const struct 
GNUNET_MESSENGER_ShortMessage *message,
   GNUNET_CRYPTO_hash (
     buffer + sizeof(hash),
     length - sizeof(hash),
-    &hash
-    );
+    &hash);
 
   GNUNET_memcpy (buffer, &hash, sizeof(hash));
 }
@@ -697,7 +701,7 @@ decode_message_body (enum GNUNET_MESSENGER_MessageKind 
*kind,
       decode_step_key (buffer, offset, &(body->join.key), length);
       break;
     } case GNUNET_MESSENGER_KIND_NAME:
-    if (length - offset > 0)
+    if (length > offset)
       decode_step_malloc (buffer, offset, body->name.name, length - offset, 1);
     else
       body->name.name = NULL;
@@ -725,13 +729,19 @@ decode_message_body (enum GNUNET_MESSENGER_MessageKind 
*kind,
     decode_step (buffer, offset, &(body->invite.key));
     break;
   case GNUNET_MESSENGER_KIND_TEXT:
-    decode_step_malloc (buffer, offset, body->text.text, length - offset, 1);
+    if (length > offset)
+      decode_step_malloc (buffer, offset, body->text.text, length - offset, 1);
+    else
+      body->text.text = NULL;
     break;
   case GNUNET_MESSENGER_KIND_FILE:
     decode_step (buffer, offset, &(body->file.key));
     decode_step (buffer, offset, &(body->file.hash));
     decode_step_ext (buffer, offset, body->file.name, sizeof(body->file.name));
-    decode_step_malloc (buffer, offset, body->file.uri, length - offset, 1);
+    if (length > offset)
+      decode_step_malloc (buffer, offset, body->file.uri, length - offset, 1);
+    else
+      body->file.uri = NULL;
     break;
   case GNUNET_MESSENGER_KIND_PRIVATE:
     decode_step (buffer, offset, &(body->privacy.key));
@@ -762,7 +772,10 @@ decode_message_body (enum GNUNET_MESSENGER_MessageKind 
*kind,
     break;
   case GNUNET_MESSENGER_KIND_TAG:
     decode_step (buffer, offset, &(body->tag.hash));
-    decode_step_malloc (buffer, offset, body->tag.tag, length - offset, 1);
+    if (length > offset)
+      decode_step_malloc (buffer, offset, body->tag.tag, length - offset, 1);
+    else
+      body->tag.tag = NULL;
     break;
   default:
     *kind = GNUNET_MESSENGER_KIND_UNKNOWN;

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]