If you need to allocate `a + b' bytes of memory, then don't allocate `a + b*2',
authormiod <miod@openbsd.org>
Sun, 18 May 2014 19:35:04 +0000 (19:35 +0000)
committermiod <miod@openbsd.org>
Sun, 18 May 2014 19:35:04 +0000 (19:35 +0000)
this is confusing and unnecessary.

Help (coz I got confused) and ok guenther@ beck@

lib/libcrypto/asn1/f_enum.c
lib/libcrypto/asn1/f_int.c
lib/libcrypto/asn1/f_string.c
lib/libssl/src/crypto/asn1/f_enum.c
lib/libssl/src/crypto/asn1/f_int.c
lib/libssl/src/crypto/asn1/f_string.c

index c7b81cc..14b609e 100644 (file)
@@ -154,14 +154,14 @@ a2i_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *bs, char *buf, int size)
                }
                i /= 2;
                if (num + i > slen) {
-                       sp = realloc(s, (unsigned int)num + i * 2);
+                       sp = realloc(s, (unsigned int)num + i);
                        if (sp == NULL) {
                                ASN1err(ASN1_F_A2I_ASN1_ENUMERATED,
                                    ERR_R_MALLOC_FAILURE);
                                goto err;
                        }
                        s = sp;
-                       slen = num + i * 2;
+                       slen = num + i;
                }
                for (j = 0; j < i; j++, k += 2) {
                        for (n = 0; n < 2; n++) {
index 283860d..192e2f3 100644 (file)
@@ -158,14 +158,14 @@ a2i_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *bs, char *buf, int size)
                }
                i /= 2;
                if (num + i > slen) {
-                       sp = OPENSSL_realloc_clean(s, slen, num + i * 2);
+                       sp = OPENSSL_realloc_clean(s, slen, num + i);
                        if (sp == NULL) {
                                ASN1err(ASN1_F_A2I_ASN1_INTEGER,
                                    ERR_R_MALLOC_FAILURE);
                                goto err;
                        }
                        s = sp;
-                       slen = num + i * 2;
+                       slen = num + i;
                }
                for (j = 0; j < i; j++, k += 2) {
                        for (n = 0; n < 2; n++) {
index 0a1f136..163fca0 100644 (file)
@@ -150,14 +150,14 @@ a2i_ASN1_STRING(BIO *bp, ASN1_STRING *bs, char *buf, int size)
                }
                i /= 2;
                if (num + i > slen) {
-                       sp = realloc(s, (unsigned int)num + i * 2);
+                       sp = realloc(s, (unsigned int)num + i);
                        if (sp == NULL) {
                                ASN1err(ASN1_F_A2I_ASN1_STRING,
                                    ERR_R_MALLOC_FAILURE);
                                goto err;
                        }
                        s = sp;
-                       slen = num + i * 2;
+                       slen = num + i;
                }
                for (j = 0; j < i; j++, k += 2) {
                        for (n = 0; n < 2; n++) {
index c7b81cc..14b609e 100644 (file)
@@ -154,14 +154,14 @@ a2i_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *bs, char *buf, int size)
                }
                i /= 2;
                if (num + i > slen) {
-                       sp = realloc(s, (unsigned int)num + i * 2);
+                       sp = realloc(s, (unsigned int)num + i);
                        if (sp == NULL) {
                                ASN1err(ASN1_F_A2I_ASN1_ENUMERATED,
                                    ERR_R_MALLOC_FAILURE);
                                goto err;
                        }
                        s = sp;
-                       slen = num + i * 2;
+                       slen = num + i;
                }
                for (j = 0; j < i; j++, k += 2) {
                        for (n = 0; n < 2; n++) {
index 283860d..192e2f3 100644 (file)
@@ -158,14 +158,14 @@ a2i_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *bs, char *buf, int size)
                }
                i /= 2;
                if (num + i > slen) {
-                       sp = OPENSSL_realloc_clean(s, slen, num + i * 2);
+                       sp = OPENSSL_realloc_clean(s, slen, num + i);
                        if (sp == NULL) {
                                ASN1err(ASN1_F_A2I_ASN1_INTEGER,
                                    ERR_R_MALLOC_FAILURE);
                                goto err;
                        }
                        s = sp;
-                       slen = num + i * 2;
+                       slen = num + i;
                }
                for (j = 0; j < i; j++, k += 2) {
                        for (n = 0; n < 2; n++) {
index 0a1f136..163fca0 100644 (file)
@@ -150,14 +150,14 @@ a2i_ASN1_STRING(BIO *bp, ASN1_STRING *bs, char *buf, int size)
                }
                i /= 2;
                if (num + i > slen) {
-                       sp = realloc(s, (unsigned int)num + i * 2);
+                       sp = realloc(s, (unsigned int)num + i);
                        if (sp == NULL) {
                                ASN1err(ASN1_F_A2I_ASN1_STRING,
                                    ERR_R_MALLOC_FAILURE);
                                goto err;
                        }
                        s = sp;
-                       slen = num + i * 2;
+                       slen = num + i;
                }
                for (j = 0; j < i; j++, k += 2) {
                        for (n = 0; n < 2; n++) {