gnunet-svn
[Top][All Lists]
Advanced

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

[gnunet] branch master updated: -fixed problem of uninitialized memory b


From: gnunet
Subject: [gnunet] branch master updated: -fixed problem of uninitialized memory by not using it
Date: Mon, 22 Nov 2021 14:46:06 +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 b57f92ee9 -fixed problem of uninitialized memory by not using it
b57f92ee9 is described below

commit b57f92ee938794a862c93c3dcc5cd47f061c4cb4
Author: TheJackiMonster <thejackimonster@gmail.com>
AuthorDate: Mon Nov 22 14:45:56 2021 +0100

    -fixed problem of uninitialized memory by not using it
    
    Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>
---
 src/messenger/gnunet-messenger.c                   |  2 -
 src/messenger/gnunet-service-messenger.c           |  2 +-
 .../gnunet-service-messenger_message_store.c       |  2 +-
 src/messenger/gnunet-service-messenger_tunnel.c    |  2 +-
 src/messenger/messenger_api.c                      |  2 +-
 src/messenger/messenger_api_message.c              | 59 ++++++++++++++--------
 src/messenger/messenger_api_message.h              | 15 +++---
 7 files changed, 51 insertions(+), 33 deletions(-)

diff --git a/src/messenger/gnunet-messenger.c b/src/messenger/gnunet-messenger.c
index 0d23a225b..e2d106be8 100644
--- a/src/messenger/gnunet-messenger.c
+++ b/src/messenger/gnunet-messenger.c
@@ -170,7 +170,6 @@ read_stdio (void *cls)
   struct GNUNET_MESSENGER_Room *room = cls;
 
   struct GNUNET_MESSENGER_Message message;
-  memset(&message, 0, sizeof(message));
   message.header.kind = GNUNET_MESSENGER_KIND_TEXT;
   message.body.text.text = buffer;
 
@@ -278,7 +277,6 @@ on_identity (void *cls,
   else
   {
     struct GNUNET_MESSENGER_Message message;
-    memset(&message, 0, sizeof(message));
     message.header.kind = GNUNET_MESSENGER_KIND_NAME;
     message.body.name.name = GNUNET_strdup(name);
 
diff --git a/src/messenger/gnunet-service-messenger.c 
b/src/messenger/gnunet-service-messenger.c
index 67a8b16e3..546f4c0d2 100644
--- a/src/messenger/gnunet-service-messenger.c
+++ b/src/messenger/gnunet-service-messenger.c
@@ -221,7 +221,7 @@ check_for_message:
 
   struct GNUNET_MESSENGER_Message message;
 
-  if (length < get_message_kind_size(GNUNET_MESSENGER_KIND_UNKNOWN))
+  if (length < get_message_kind_size(GNUNET_MESSENGER_KIND_UNKNOWN, GNUNET_NO))
     return GNUNET_NO;
 
   if (GNUNET_YES != decode_message (&message, msg_length, msg_buffer, 
GNUNET_NO, NULL))
diff --git a/src/messenger/gnunet-service-messenger_message_store.c 
b/src/messenger/gnunet-service-messenger_message_store.c
index 56448997a..ce20ac924 100644
--- a/src/messenger/gnunet-service-messenger_message_store.c
+++ b/src/messenger/gnunet-service-messenger_message_store.c
@@ -427,7 +427,7 @@ get_store_message (struct GNUNET_MESSENGER_MessageStore 
*store,
     return NULL;
 
   if ((GNUNET_DISK_file_read (store->storage_messages, buffer, entry->length) 
!= entry->length) ||
-      (entry->length < get_message_kind_size(GNUNET_MESSENGER_KIND_UNKNOWN)))
+      (entry->length < get_message_kind_size(GNUNET_MESSENGER_KIND_UNKNOWN, 
GNUNET_YES)))
     goto free_buffer;
 
   message = create_message (GNUNET_MESSENGER_KIND_UNKNOWN);
diff --git a/src/messenger/gnunet-service-messenger_tunnel.c 
b/src/messenger/gnunet-service-messenger_tunnel.c
index c21f298b3..45c10c1af 100644
--- a/src/messenger/gnunet-service-messenger_tunnel.c
+++ b/src/messenger/gnunet-service-messenger_tunnel.c
@@ -122,7 +122,7 @@ check_tunnel_message (void *cls,
 
   struct GNUNET_MESSENGER_Message message;
 
-  if (length < get_message_kind_size(GNUNET_MESSENGER_KIND_UNKNOWN))
+  if (length < get_message_kind_size(GNUNET_MESSENGER_KIND_UNKNOWN, 
GNUNET_YES))
   {
     GNUNET_log(GNUNET_ERROR_TYPE_WARNING, "Tunnel error: Message too short! 
(%d)\n", length);
     return GNUNET_SYSERR;
diff --git a/src/messenger/messenger_api.c b/src/messenger/messenger_api.c
index 81a02e858..2db841315 100644
--- a/src/messenger/messenger_api.c
+++ b/src/messenger/messenger_api.c
@@ -208,7 +208,7 @@ check_recv_message (void *cls,
 
   struct GNUNET_MESSENGER_Message message;
 
-  if (length < get_message_kind_size(GNUNET_MESSENGER_KIND_UNKNOWN))
+  if (length < get_message_kind_size(GNUNET_MESSENGER_KIND_UNKNOWN, 
GNUNET_YES))
     return GNUNET_NO;
 
   if (GNUNET_YES != decode_message (&message, length, buffer, GNUNET_YES, 
NULL))
diff --git a/src/messenger/messenger_api_message.c 
b/src/messenger/messenger_api_message.c
index 4e64cc22f..496c98dbf 100644
--- a/src/messenger/messenger_api_message.c
+++ b/src/messenger/messenger_api_message.c
@@ -229,13 +229,18 @@ get_message_body_kind_size (enum 
GNUNET_MESSENGER_MessageKind kind)
 typedef uint32_t kind_t;
 
 uint16_t
-get_message_kind_size (enum GNUNET_MESSENGER_MessageKind kind)
+get_message_kind_size (enum GNUNET_MESSENGER_MessageKind kind,
+                       int include_header)
 {
   uint16_t length = 0;
 
-  length += member_size(struct GNUNET_MESSENGER_Message, header.timestamp);
-  length += member_size(struct GNUNET_MESSENGER_Message, header.sender_id);
-  length += member_size(struct GNUNET_MESSENGER_Message, header.previous);
+  if (GNUNET_YES == include_header)
+  {
+    length += member_size(struct GNUNET_MESSENGER_Message, header.timestamp);
+    length += member_size(struct GNUNET_MESSENGER_Message, header.sender_id);
+    length += member_size(struct GNUNET_MESSENGER_Message, header.previous);
+  }
+
   length += sizeof(kind_t);
 
   return length + get_message_body_kind_size (kind);
@@ -279,16 +284,16 @@ get_message_body_size (enum GNUNET_MESSENGER_MessageKind 
kind,
 
 uint16_t
 get_message_size (const struct GNUNET_MESSENGER_Message *message,
-                  int include_signature)
+                  int include_header)
 {
   GNUNET_assert(message);
 
   uint16_t length = 0;
 
-  if (GNUNET_YES == include_signature)
+  if (GNUNET_YES == include_header)
     length += 
GNUNET_IDENTITY_signature_get_length(&(message->header.signature));
 
-  length += get_message_kind_size (message->header.kind);
+  length += get_message_kind_size (message->header.kind, include_header);
   length += get_message_body_size (message->header.kind, &(message->body));
 
   return length;
@@ -314,7 +319,7 @@ calc_usual_padding ()
   uint16_t kind_size;
 
   for (int i = 0; i <= GNUNET_MESSENGER_KIND_MAX; i++) {
-    kind_size = get_message_kind_size ((enum GNUNET_MESSENGER_MessageKind) i);
+    kind_size = get_message_kind_size ((enum GNUNET_MESSENGER_MessageKind) i, 
GNUNET_YES);
 
     if (kind_size > padding)
       padding = kind_size;
@@ -464,20 +469,24 @@ void
 encode_message (const struct GNUNET_MESSENGER_Message *message,
                 uint16_t length,
                 char *buffer,
-                int include_signature)
+                int include_header)
 {
   GNUNET_assert((message) && (buffer));
 
   uint16_t offset = 0;
 
-  if (GNUNET_YES == include_signature)
+  if (GNUNET_YES == include_header)
     encode_step_signature(buffer, offset, &(message->header.signature), 
length);
 
   const kind_t kind = GNUNET_htobe32((kind_t) message->header.kind);
 
-  encode_step(buffer, offset, &(message->header.timestamp));
-  encode_step(buffer, offset, &(message->header.sender_id));
-  encode_step(buffer, offset, &(message->header.previous));
+  if (GNUNET_YES == include_header)
+  {
+    encode_step(buffer, offset, &(message->header.timestamp));
+    encode_step(buffer, offset, &(message->header.sender_id));
+    encode_step(buffer, offset, &(message->header.previous));
+  }
+
   encode_step(buffer, offset, &kind);
 
   encode_message_body (message->header.kind, &(message->body), length, buffer, 
offset);
@@ -619,14 +628,18 @@ int
 decode_message (struct GNUNET_MESSENGER_Message *message,
                 uint16_t length,
                 const char *buffer,
-                int include_signature,
+                int include_header,
                 uint16_t *padding)
 {
-  GNUNET_assert((message) && (buffer) && (length >= 
get_message_kind_size(GNUNET_MESSENGER_KIND_UNKNOWN)));
+  GNUNET_assert(
+      (message) &&
+      (buffer) &&
+      (length >= get_message_kind_size(GNUNET_MESSENGER_KIND_UNKNOWN, 
include_header))
+  );
 
   uint16_t offset = 0;
 
-  if (GNUNET_YES == include_signature)
+  if (GNUNET_YES == include_header)
   {
     ssize_t result = GNUNET_IDENTITY_read_signature_from_buffer(
         &(message->header.signature), buffer, length - offset
@@ -640,19 +653,23 @@ decode_message (struct GNUNET_MESSENGER_Message *message,
 
   const uint16_t count = length - offset;
 
-  if (count < get_message_kind_size (GNUNET_MESSENGER_KIND_UNKNOWN))
+  if (count < get_message_kind_size (GNUNET_MESSENGER_KIND_UNKNOWN, 
include_header))
     return GNUNET_NO;
 
   kind_t kind;
 
-  decode_step(buffer, offset, &(message->header.timestamp));
-  decode_step(buffer, offset, &(message->header.sender_id));
-  decode_step(buffer, offset, &(message->header.previous));
+  if (GNUNET_YES == include_header)
+  {
+    decode_step(buffer, offset, &(message->header.timestamp));
+    decode_step(buffer, offset, &(message->header.sender_id));
+    decode_step(buffer, offset, &(message->header.previous));
+  }
+
   decode_step(buffer, offset, &kind);
 
   message->header.kind = (enum GNUNET_MESSENGER_MessageKind) 
GNUNET_be32toh(kind);
 
-  if (count < get_message_kind_size (message->header.kind))
+  if (count < get_message_kind_size (message->header.kind, include_header))
     return GNUNET_NO;
 
   const uint16_t result = decode_message_body (&(message->header.kind), 
&(message->body), length, buffer, offset);
diff --git a/src/messenger/messenger_api_message.h 
b/src/messenger/messenger_api_message.h
index 21161c134..46c5cb024 100644
--- a/src/messenger/messenger_api_message.h
+++ b/src/messenger/messenger_api_message.h
@@ -90,21 +90,23 @@ is_message_session_bound (const struct 
GNUNET_MESSENGER_Message *message);
  * Returns the minimal size in bytes to encode a message of a specific 
<i>kind</i>.
  *
  * @param[in] kind Kind of message
+ * @param[in] include_header Flag to include header
  * @return Minimal size to encode
  */
 uint16_t
-get_message_kind_size (enum GNUNET_MESSENGER_MessageKind kind);
+get_message_kind_size (enum GNUNET_MESSENGER_MessageKind kind,
+                       int include_header);
 
 /**
  * Returns the exact size in bytes to encode a given <i>message</i>.
  *
  * @param[in] message Message
- * @param[in] encode_signature Flag to include signature
+ * @param[in] include_header Flag to include header
  * @return Size to encode
  */
 uint16_t
 get_message_size (const struct GNUNET_MESSENGER_Message *message,
-                  int include_signature);
+                  int include_header);
 
 /**
  * Encodes a given <i>message</i> into a <i>buffer</i> of a maximal 
<i>length</i> in bytes.
@@ -112,13 +114,13 @@ get_message_size (const struct GNUNET_MESSENGER_Message 
*message,
  * @param[in] message Message
  * @param[in] length Maximal length to encode
  * @param[out] buffer Buffer
- * @param[in] encode_signature Flag to include signature
+ * @param[in] include_header Flag to include header
  */
 void
 encode_message (const struct GNUNET_MESSENGER_Message *message,
                 uint16_t length,
                 char *buffer,
-                int include_signature);
+                int include_header);
 
 /**
  * Decodes a <i>message</i> from a given <i>buffer</i> of a maximal 
<i>length</i> in bytes.
@@ -131,6 +133,7 @@ encode_message (const struct GNUNET_MESSENGER_Message 
*message,
  * @param[out] message Message
  * @param[in] length Maximal length to decode
  * @param[in] buffer Buffer
+ * @param[in] include_header Flag to include header
  * @param[out] padding Padding
  * @return #GNUNET_YES on success, otherwise #GNUNET_NO
  */
@@ -138,7 +141,7 @@ int
 decode_message (struct GNUNET_MESSENGER_Message *message,
                 uint16_t length,
                 const char *buffer,
-                int include_signature,
+                int include_header,
                 uint16_t *padding);
 
 /**

-- 
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]