You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by je...@apache.org on 2026/06/15 11:47:18 UTC

(mynewt-core) branch master updated: apps/crypto_test: Fix NULL pointer dereference

This is an automated email from the ASF dual-hosted git repository.

kasjer pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-core.git


The following commit(s) were added to refs/heads/master by this push:
     new 0e895053b apps/crypto_test: Fix NULL pointer dereference
0e895053b is described below

commit 0e895053bf570a60e7765d38f02966b2c66e45cc
Author: Jerzy Kasenberg <je...@codecoup.pl>
AuthorDate: Mon Jun 15 13:08:29 2026 +0200

    apps/crypto_test: Fix NULL pointer dereference
    
    In several place code was copying IV for algorithm
    that did not needed it and has relevant field in
    test set to NULL. mcmcpy with NULL pointer for
    source was executed.
    
    Now if there is no relevent iv filed is NULL code
    do not tries to use it.
    
    It worked for devices where lower addresses
    were accessible and failed for cases where they are not.
    
    Signed-off-by: Jerzy Kasenberg <je...@codecoup.pl>
---
 apps/crypto_test/src/main.c | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/apps/crypto_test/src/main.c b/apps/crypto_test/src/main.c
index cbe20ea61..761961c0f 100755
--- a/apps/crypto_test/src/main.c
+++ b/apps/crypto_test/src/main.c
@@ -624,7 +624,9 @@ run_inplace_test(struct crypto_dev *crypto)
          * assure vars are in RAM, and reinitialized from test data
          */
         memcpy(buf, inbuf, AES_BLOCK_LEN);
-        memcpy(ivcopy, data[i].iv, AES_BLOCK_LEN);
+        if (data[i].iv != NULL) {
+            memcpy(ivcopy, data[i].iv, AES_BLOCK_LEN);
+        }
 
         printf("%s enc: ", data[i].name);
         (void)crypto_encrypt_custom(crypto, CRYPTO_ALGO_AES, data[i].mode,
@@ -636,7 +638,9 @@ run_inplace_test(struct crypto_dev *crypto)
         }
 
         memcpy(buf, data[i].expected, AES_BLOCK_LEN);
-        memcpy(ivcopy, data[i].iv, AES_BLOCK_LEN);
+        if (data[i].iv != NULL) {
+            memcpy(ivcopy, data[i].iv, AES_BLOCK_LEN);
+        }
 
         printf("%s dec: ", data[i].name);
         (void)crypto_decrypt_custom(crypto, CRYPTO_ALGO_AES, data[i].mode,
@@ -868,7 +872,9 @@ run_iovec_test(struct crypto_dev *crypto)
         iov = malloc(sizeof(struct crypto_iovec) * iovp->iovlen);
         assert(iov);
 
-        memcpy(iv, iovp->iv, AES_BLOCK_LEN);
+        if (iovp->iv != NULL) {
+            memcpy(iv, iovp->iv, AES_BLOCK_LEN);
+        }
         for (i = 0; i < iovp->iovlen; i++) {
             iov[i].iov_base = malloc(iovp->iov[i].len);
             assert(iov[i].iov_base);
@@ -901,7 +907,9 @@ run_iovec_test(struct crypto_dev *crypto)
 
         printf("iov %s dec: ", iovp->name);
 
-        memcpy(iv, iovp->iv, AES_BLOCK_LEN);
+        if (iovp->iv != NULL) {
+            memcpy(iv, iovp->iv, AES_BLOCK_LEN);
+        }
         for (i = 0; i < iovp->iovlen; i++) {
             iov[i].iov_base = malloc(iovp->iov[i].len);
             assert(iov[i].iov_base);