[07/14] test/latencystats: fix stack smashing

Message ID 1559638792-8608-8-git-send-email-david.marchand@redhat.com (mailing list archive)
State Superseded, archived
Delegated to: Thomas Monjalon
Headers
Series Unit tests fixes for CI |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation fail Compilation issues

Commit Message

David Marchand June 4, 2019, 8:59 a.m. UTC
  Caught in one Travis run:
 + ------------------------------------------------------- +
 + Test Suite : Latency Stats Unit Test Suite
 + ------------------------------------------------------- +
 + TestCase [ 0] : test_latency_init succeeded
 + TestCase [ 1] : test_latency_update succeeded
[snip]
 + TestCase [1601724781] : test_latencystats_get_names succeeded
[snip]
 + Tests Failed :      1601790830

htonl(1601724781) -> "m", "a", "x", "_"
htonl(1601790830) -> "n", "c", "y", "_"

Looks like someone went too far.

The test passes a bigger size than the array it passes along.

Fixes: 1e3676a06e4c ("test/latency: add unit tests for latencystats library")
Cc: stable@dpdk.org

Signed-off-by: David Marchand <david.marchand@redhat.com>
---
 app/test/test_latencystats.c | 18 ------------------
 1 file changed, 18 deletions(-)
  

Comments

Aaron Conole June 4, 2019, 1:38 p.m. UTC | #1
David Marchand <david.marchand@redhat.com> writes:

> Caught in one Travis run:
>  + ------------------------------------------------------- +
>  + Test Suite : Latency Stats Unit Test Suite
>  + ------------------------------------------------------- +
>  + TestCase [ 0] : test_latency_init succeeded
>  + TestCase [ 1] : test_latency_update succeeded
> [snip]
>  + TestCase [1601724781] : test_latencystats_get_names succeeded
> [snip]
>  + Tests Failed :      1601790830
>
> htonl(1601724781) -> "m", "a", "x", "_"
> htonl(1601790830) -> "n", "c", "y", "_"
>
> Looks like someone went too far.
>
> The test passes a bigger size than the array it passes along.
>
> Fixes: 1e3676a06e4c ("test/latency: add unit tests for latencystats library")
> Cc: stable@dpdk.org
>
> Signed-off-by: David Marchand <david.marchand@redhat.com>
> ---

Acked-by: Aaron Conole <aconole@redhat.com>
  

Patch

diff --git a/app/test/test_latencystats.c b/app/test/test_latencystats.c
index 039c508..8dd794b 100644
--- a/app/test/test_latencystats.c
+++ b/app/test/test_latencystats.c
@@ -69,13 +69,10 @@  static int test_latencystats_get_names(void)
 	int ret = 0, i = 0;
 	int size = 0;
 	struct rte_metric_name names[NUM_STATS];
-	struct rte_metric_name wrongnames[NUM_STATS - 2];
 
 	size_t m_size = sizeof(struct rte_metric_name);
 	for (i = 0; i < NUM_STATS; i++)
 		memset(&names[i], 0, m_size);
-	for (i = 0; i < NUM_STATS - 2; i++)
-		memset(&wrongnames[i], 0, m_size);
 
 	/* Success Test: Valid names and size */
 	size = NUM_STATS;
@@ -99,10 +96,6 @@  static int test_latencystats_get_names(void)
 	TEST_ASSERT((ret == NUM_STATS), "Test Failed to get the metrics count,"
 		    "Actual: %d Expected: %d", ret, NUM_STATS);
 
-	/* Failure Test: Invalid names (array size lesser than size) */
-	size = NUM_STATS + 1;
-	ret = rte_latencystats_get_names(wrongnames, size);
-	TEST_ASSERT((ret == NUM_STATS), "Test Failed to get metrics names");
 	return TEST_SUCCESS;
 }
 
@@ -112,13 +105,10 @@  static int test_latencystats_get(void)
 	int ret = 0, i = 0;
 	int size = 0;
 	struct rte_metric_value values[NUM_STATS];
-	struct rte_metric_value wrongvalues[NUM_STATS - 2];
 
 	size_t v_size = sizeof(struct rte_metric_value);
 	for (i = 0; i < NUM_STATS; i++)
 		memset(&values[i], 0, v_size);
-	for (i = 0; i < NUM_STATS - 2; i++)
-		memset(&wrongvalues[i], 0, v_size);
 
 	/* Success Test: Valid values and valid size */
 	size = NUM_STATS;
@@ -137,14 +127,6 @@  static int test_latencystats_get(void)
 	TEST_ASSERT((ret == NUM_STATS), "Test Failed to get the stats count,"
 		    "Actual: %d Expected: %d", ret, NUM_STATS);
 
-	/* Failure Test: Invalid values(array size lesser than size)
-	 * and invalid size
-	 */
-	size = NUM_STATS + 2;
-	ret = rte_latencystats_get(wrongvalues, size);
-	TEST_ASSERT(ret == NUM_STATS, "Test Failed to get latency metrics"
-			" values");
-
 	return TEST_SUCCESS;
 }