Fix use of arithmetic on void*

Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
This commit is contained in:
Gilles Peskine 2023-03-16 21:39:47 +01:00
parent 74b4223c81
commit 28e4dc1e39

View File

@ -529,81 +529,84 @@ void aes_ecb_copy_context(data_t *key)
/* We test context copying multiple times, with different alignments /* We test context copying multiple times, with different alignments
* of the original and of the copies. */ * of the original and of the copies. */
void *src = NULL; // Memory block containing the original context struct align0 {
void *enc = NULL; // Memory block containing the copy doing encryption mbedtls_aes_context ctx;
void *dec = NULL; // Memory block containing the copy doing decryption };
struct align0 *src0 = NULL;
struct align0 *enc0 = NULL;
struct align0 *dec0 = NULL;
struct align1 { struct align1 {
char bump; char bump;
mbedtls_aes_context ctx; mbedtls_aes_context ctx;
}; };
struct align1 *src1 = NULL;
struct align1 *enc1 = NULL;
struct align1 *dec1 = NULL;
/* All peak alignment */ /* All peak alignment */
ASSERT_ALLOC(src, sizeof(mbedtls_aes_context)); ASSERT_ALLOC(src0, 1);
ASSERT_ALLOC(enc, sizeof(mbedtls_aes_context)); ASSERT_ALLOC(enc0, 1);
ASSERT_ALLOC(dec, sizeof(mbedtls_aes_context)); ASSERT_ALLOC(dec0, 1);
if (!test_copy(key, src, enc, dec)) { if (!test_copy(key, &src0->ctx, &enc0->ctx, &dec0->ctx)) {
goto exit; goto exit;
} }
mbedtls_free(src); mbedtls_free(src0);
src = NULL; src0 = NULL;
mbedtls_free(enc); mbedtls_free(enc0);
enc = NULL; enc0 = NULL;
mbedtls_free(dec); mbedtls_free(dec0);
dec = NULL; dec0 = NULL;
/* Original shifted */ /* Original shifted */
ASSERT_ALLOC(src, sizeof(struct align1)); ASSERT_ALLOC(src1, 1);
ASSERT_ALLOC(enc, sizeof(mbedtls_aes_context)); ASSERT_ALLOC(enc0, 1);
ASSERT_ALLOC(dec, sizeof(mbedtls_aes_context)); ASSERT_ALLOC(dec0, 1);
if (!test_copy(key, &((struct align1 *) src)->ctx, enc, dec)) { if (!test_copy(key, &src1->ctx, &enc0->ctx, &dec0->ctx)) {
goto exit; goto exit;
} }
mbedtls_free(src); mbedtls_free(src1);
src = NULL; src1 = NULL;
mbedtls_free(enc); mbedtls_free(enc0);
enc = NULL; enc0 = NULL;
mbedtls_free(dec); mbedtls_free(dec0);
dec = NULL; dec0 = NULL;
/* Copies shifted */ /* Copies shifted */
ASSERT_ALLOC(src, sizeof(mbedtls_aes_context)); ASSERT_ALLOC(src0, 1);
ASSERT_ALLOC(enc, sizeof(struct align1)); ASSERT_ALLOC(enc1, 1);
ASSERT_ALLOC(dec, sizeof(struct align1)); ASSERT_ALLOC(dec1, 1);
if (!test_copy(key, if (!test_copy(key, &src0->ctx, &enc1->ctx, &dec1->ctx)) {
src,
&((struct align1 *) enc)->ctx,
&((struct align1 *) dec)->ctx)) {
goto exit; goto exit;
} }
mbedtls_free(src); mbedtls_free(src0);
src = NULL; src0 = NULL;
mbedtls_free(enc); mbedtls_free(enc1);
enc = NULL; enc1 = NULL;
mbedtls_free(dec); mbedtls_free(dec1);
dec = NULL; dec1 = NULL;
/* Source and copies shifted */ /* Source and copies shifted */
ASSERT_ALLOC(src, sizeof(struct align1)); ASSERT_ALLOC(src1, 1);
ASSERT_ALLOC(enc, sizeof(struct align1)); ASSERT_ALLOC(enc1, 1);
ASSERT_ALLOC(dec, sizeof(struct align1)); ASSERT_ALLOC(dec1, 1);
if (!test_copy(key, if (!test_copy(key, &src1->ctx, &enc1->ctx, &dec1->ctx)) {
&((struct align1 *) src)->ctx,
&((struct align1 *) enc)->ctx,
&((struct align1 *) dec)->ctx)) {
goto exit; goto exit;
} }
mbedtls_free(src); mbedtls_free(src1);
src = NULL; src1 = NULL;
mbedtls_free(enc); mbedtls_free(enc1);
enc = NULL; enc1 = NULL;
mbedtls_free(dec); mbedtls_free(dec1);
dec = NULL; dec1 = NULL;
exit: exit:
mbedtls_free(src); mbedtls_free(src0);
mbedtls_free(enc); mbedtls_free(enc0);
mbedtls_free(dec); mbedtls_free(dec0);
mbedtls_free(src1);
mbedtls_free(enc1);
mbedtls_free(dec1);
} }
/* END_CASE */ /* END_CASE */