Hi Viktor,
Your patch tests clean, however there is an easier way which avoids malloc:
Norm
Index: test/asn1_encode_test.c
===================================================================
--- test/asn1_encode_test.c (revision 43654)
+++ test/asn1_encode_test.c (working copy)
@@ -706,15 +706,16 @@
return ret;
}
static int do_print_item(const TEST_PACKAGE *package)
{
#define DATA_BUF_SIZE 256
- unsigned char buf[DATA_BUF_SIZE];
+ uint64_t _buf[DATA_BUF_SIZE / sizeof(uint64_t)];/* force 8-byte
alignment */
+ unsigned char *buf = (unsigned char *) _buf;
const ASN1_ITEM *i = ASN1_ITEM_ptr(package->asn1_type);
- ASN1_VALUE *o = (ASN1_VALUE *)&buf;
+ ASN1_VALUE *o = (ASN1_VALUE *)buf;
int ret;
OPENSSL_assert(package->encode_expectations_elem_size <= DATA_BUF_SIZE);
(void)RAND_bytes(buf, (int)package->encode_expectations_elem_size);
ret = ASN1_item_print(bio_err, o, 0, i, NULL);
On 2/19/2018 9:00 PM, Viktor Dukhovni wrote:
On Mon, Feb 19, 2018 at 01:45:26PM -0800, Norm Green wrote:
# ASN1_LONG_DATA:
# success: TRUE
t@1 (l@1) signal BUS (invalid address alignment) in asn1_item_print_ctx at
line 155 in file "tasn_prn.c"
155 || (it->utype != V_ASN1_BOOLEAN)) && *fld == NULL) {
Perhaps aligning the item buffer (by using malloc) will help, does
the patch below address the problem?
diff --git a/test/asn1_encode_test.c b/test/asn1_encode_test.c
index e9f459ad65..77fa9b5954 100644
--- a/test/asn1_encode_test.c
+++ b/test/asn1_encode_test.c
@@ -709,15 +709,19 @@ 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 = OPENSSL_malloc(DATA_BUF_SIZE);
int ret;
OPENSSL_assert(package->encode_expectations_elem_size <= DATA_BUF_SIZE);
- (void)RAND_bytes(buf, (int)package->encode_expectations_elem_size);
+ if (o == NULL)
+ return 0;
+
+ (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;
}
--
openssl-users mailing list
To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-users