Use malloc to avoid alignment problems.
authorViktor Dukhovni <openssl-users@dukhovni.org>
Wed, 21 Feb 2018 13:25:49 +0000 (08:25 -0500)
committerRich Salz <rsalz@openssl.org>
Wed, 21 Feb 2018 13:25:49 +0000 (08:25 -0500)
Thanks to Norm Green for reporting this issue.

Signed-off-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5423)

test/asn1_encode_test.c

index e9f459ad6505adf9f2b17f01a524b13d7949f7a7..1ae05199354460854bce649bf1430002889a21b3 100644 (file)
@@ -709,15 +709,18 @@ static int do_encode_custom(EXPECTED *input,
 static int do_print_item(const TEST_PACKAGE *package)
 {
 #define DATA_BUF_SIZE 256
-    unsigned char buf[DATA_BUF_SIZE];
     const ASN1_ITEM *i = ASN1_ITEM_ptr(package->asn1_type);
-    ASN1_VALUE *o = (ASN1_VALUE *)&buf;
+    ASN1_VALUE *o;
     int ret;
 
     OPENSSL_assert(package->encode_expectations_elem_size <= DATA_BUF_SIZE);
+    if ((o = OPENSSL_malloc(DATA_BUF_SIZE)) == NULL)
+        return 0;
 
-    (void)RAND_bytes(buf, (int)package->encode_expectations_elem_size);
+    (void)RAND_bytes((unsigned char*)o,
+                     (int)package->encode_expectations_elem_size);
     ret = ASN1_item_print(bio_err, o, 0, i, NULL);
+    OPENSSL_free(o);
 
     return ret;
 }