libtasn1-commit
[Top][All Lists]
Advanced

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

[SCM] GNU libtasn1 branch, master, updated. libtasn1_4.7-16-g9bed7ad


From: Nikos Mavrogiannopoulos
Subject: [SCM] GNU libtasn1 branch, master, updated. libtasn1_4.7-16-g9bed7ad
Date: Mon, 04 Apr 2016 12:48:47 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU libtasn1".

http://git.savannah.gnu.org/cgit/libtasn1.git/commit/?id=9bed7ad7a65e7a6b1d879ef8f2b5bd8ef244a04d

The branch, master has been updated
       via  9bed7ad7a65e7a6b1d879ef8f2b5bd8ef244a04d (commit)
      from  0301945a0f1e33ff9e02175c7848fc7c0a91b6db (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 9bed7ad7a65e7a6b1d879ef8f2b5bd8ef244a04d
Author: Nikos Mavrogiannopoulos <address@hidden>
Date:   Mon Apr 4 14:46:58 2016 +0200

    Simplify _asn1_append_value() and avoid memcpy's with zero length
    
    Based on patch of Pascal Cuoq <address@hidden>

-----------------------------------------------------------------------

Summary of changes:
 lib/parser_aux.c |   28 +++++++++++++++++++---------
 1 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/lib/parser_aux.c b/lib/parser_aux.c
index 0a1f645..a42cdd2 100644
--- a/lib/parser_aux.c
+++ b/lib/parser_aux.c
@@ -316,39 +316,49 @@ _asn1_append_value (asn1_node node, const void *value, 
unsigned int len)
 {
   if (node == NULL)
     return node;
-  if (node->value != NULL && node->value != node->small_value)
+
+  if (node->value == NULL)
+    return _asn1_set_value (node, value, len);
+
+  if (len == 0)
+    return node;
+
+  if (node->value == node->small_value)
     {
-      /* value is allocated */
+      /* value is in node */
       int prev_len = node->value_len;
       node->value_len += len;
-      node->value = _asn1_realloc (node->value, node->value_len);
+      node->value = malloc (node->value_len);
       if (node->value == NULL)
        {
          node->value_len = 0;
          return NULL;
        }
+
+      if (prev_len > 0)
+        memcpy (node->value, node->small_value, prev_len);
+
       memcpy (&node->value[prev_len], value, len);
 
       return node;
     }
-  else if (node->value == node->small_value)
+  else /* if (node->value != NULL && node->value != node->small_value) */
     {
-      /* value is in node */
+      /* value is allocated */
       int prev_len = node->value_len;
       node->value_len += len;
-      node->value = malloc (node->value_len);
+
+      node->value = _asn1_realloc (node->value, node->value_len);
       if (node->value == NULL)
        {
          node->value_len = 0;
          return NULL;
        }
-      memcpy (node->value, node->small_value, prev_len);
+
       memcpy (&node->value[prev_len], value, len);
 
       return node;
     }
-  else                         /* node->value == NULL */
-    return _asn1_set_value (node, value, len);
 }
 
 /******************************************************************/


hooks/post-receive
-- 
GNU libtasn1



reply via email to

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