test/crypto: fix gcc 11 array-bounds error

Message ID 20210505085314.54750-1-ktraynor@redhat.com (mailing list archive)
State Accepted, archived
Delegated to: akhil goyal
Headers
Series test/crypto: fix gcc 11 array-bounds error |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/iol-testing success Testing PASS
ci/iol-abi-testing success Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS
ci/github-robot success github build: passed
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/Intel-compilation success Compilation OK
ci/intel-Testing success Testing PASS

Commit Message

Kevin Traynor May 5, 2021, 8:53 a.m. UTC
  $ gcc --version
gcc (GCC) 11.1.1 20210428 (Red Hat 11.1.1-1)

/test_cryptodev.c.o -c ../app/test/test_cryptodev.c
../app/test/test_cryptodev.c: In function ‘test_multi_session’:
../app/test/test_cryptodev.c:10447:9:
error: array subscript ‘struct rte_cryptodev_sym_session *[4]’
is partly outside array bounds of ‘unsigned char[33]’
[-Werror=array-bounds]
10447 |   rte_cryptodev_sym_session_init(ts_params->valid_devs[0],
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
10448 |     sessions[i], &ut_params->auth_xform,
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
10449 |     ts_params->session_priv_mpool);
      |                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../app/test/test_cryptodev.c:10399:20:
note: referencing an object of size 33 allocated by ‘rte_malloc’
10399 |  sessions = rte_malloc(NULL,
      |             ^~~~~~~~~~~~~~~~
10400 |             (sizeof(struct rte_cryptodev_sym_session *) *
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
10401 |             MAX_NB_SESSIONS) + 1, 0);
      |             ~~~~~~~~~~~~~~~~~~~~~~~~

Fix the allocation for sessions, to prevent an array-bounds
warning with gcc 11. Set the not created session to NULL.

Fixes: 202d375c60bc ("app/test: add cryptodev unit and performance tests")
Cc: stable@dpdk.org

Signed-off-by: Kevin Traynor <ktraynor@redhat.com>
---
 app/test/test_cryptodev.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
  

Comments

Akhil Goyal May 17, 2021, 7:24 p.m. UTC | #1
> $ gcc --version
> gcc (GCC) 11.1.1 20210428 (Red Hat 11.1.1-1)
> 
> /test_cryptodev.c.o -c ../app/test/test_cryptodev.c
> ../app/test/test_cryptodev.c: In function ‘test_multi_session’:
> ../app/test/test_cryptodev.c:10447:9:
> error: array subscript ‘struct rte_cryptodev_sym_session *[4]’
> is partly outside array bounds of ‘unsigned char[33]’
> [-Werror=array-bounds]
> 10447 |   rte_cryptodev_sym_session_init(ts_params->valid_devs[0],
>       |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 10448 |     sessions[i], &ut_params->auth_xform,
>       |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 10449 |     ts_params->session_priv_mpool);
>       |                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> ../app/test/test_cryptodev.c:10399:20:
> note: referencing an object of size 33 allocated by ‘rte_malloc’
> 10399 |  sessions = rte_malloc(NULL,
>       |             ^~~~~~~~~~~~~~~~
> 10400 |             (sizeof(struct rte_cryptodev_sym_session *) *
>       |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 10401 |             MAX_NB_SESSIONS) + 1, 0);
>       |             ~~~~~~~~~~~~~~~~~~~~~~~~
> 
> Fix the allocation for sessions, to prevent an array-bounds
> warning with gcc 11. Set the not created session to NULL.
> 
> Fixes: 202d375c60bc ("app/test: add cryptodev unit and performance tests")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Kevin Traynor <ktraynor@redhat.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>

Applied to dpdk-next-crypto
  

Patch

diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c
index 32e64e2dd1..4f766e070d 100644
--- a/app/test/test_cryptodev.c
+++ b/app/test/test_cryptodev.c
@@ -10398,6 +10398,6 @@  test_multi_session(void)
 
 	sessions = rte_malloc(NULL,
-			(sizeof(struct rte_cryptodev_sym_session *) *
-			MAX_NB_SESSIONS) + 1, 0);
+			sizeof(struct rte_cryptodev_sym_session *) *
+			(MAX_NB_SESSIONS + 1), 0);
 
 	/* Create multiple crypto sessions*/
@@ -10444,4 +10444,5 @@  test_multi_session(void)
 	}
 
+	sessions[i] = NULL;
 	/* Next session create should fail */
 	rte_cryptodev_sym_session_init(ts_params->valid_devs[0],