From 2074a3b29169308bbb42f88cc1fcb9be0af20ee7 Mon Sep 17 00:00:00 2001 From: David Green Date: Sun, 7 Mar 2021 14:38:03 +0000 Subject: [PATCH] CMSIS-DSP: Ensure correlation array index is signed. This attempts to ensures that even on a 64bit system, the array access will be treated as a negative number, not a large unsigned offset ending up reading from the middle of nowhere. --- Source/FilteringFunctions/arm_correlate_f16.c | 2 +- Source/FilteringFunctions/arm_correlate_f32.c | 2 +- Source/FilteringFunctions/arm_correlate_q15.c | 2 +- Source/FilteringFunctions/arm_correlate_q31.c | 2 +- Source/FilteringFunctions/arm_correlate_q7.c | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Source/FilteringFunctions/arm_correlate_f16.c b/Source/FilteringFunctions/arm_correlate_f16.c index 960577de..6e9c2183 100755 --- a/Source/FilteringFunctions/arm_correlate_f16.c +++ b/Source/FilteringFunctions/arm_correlate_f16.c @@ -1136,7 +1136,7 @@ void arm_correlate_f16( if ((((i - j) < srcBLen) && (j < srcALen))) { /* z[i] += x[i-j] * y[j] */ - sum += pIn1[j] * pIn2[-((int32_t) i - j)]; + sum += pIn1[j] * pIn2[-((int32_t) i - (int32_t) j)]; } } diff --git a/Source/FilteringFunctions/arm_correlate_f32.c b/Source/FilteringFunctions/arm_correlate_f32.c index 839049b3..a0805f1e 100644 --- a/Source/FilteringFunctions/arm_correlate_f32.c +++ b/Source/FilteringFunctions/arm_correlate_f32.c @@ -1074,7 +1074,7 @@ void arm_correlate_f32( if ((((i - j) < srcBLen) && (j < srcALen))) { /* z[i] += x[i-j] * y[j] */ - sum += pIn1[j] * pIn2[-((int32_t) i - j)]; + sum += pIn1[j] * pIn2[-((int32_t) i - (int32_t) j)]; } } diff --git a/Source/FilteringFunctions/arm_correlate_q15.c b/Source/FilteringFunctions/arm_correlate_q15.c index 270eda70..ac1a6307 100644 --- a/Source/FilteringFunctions/arm_correlate_q15.c +++ b/Source/FilteringFunctions/arm_correlate_q15.c @@ -882,7 +882,7 @@ void arm_correlate_q15( if (((i - j) < srcBLen) && (j < srcALen)) { /* z[i] += x[i-j] * y[j] */ - sum += ((q31_t) pIn1[j] * pIn2[-((int32_t) i - j)]); + sum += ((q31_t) pIn1[j] * pIn2[-((int32_t) i - (int32_t) j)]); } } diff --git a/Source/FilteringFunctions/arm_correlate_q31.c b/Source/FilteringFunctions/arm_correlate_q31.c index c6bb38ec..59fbd166 100644 --- a/Source/FilteringFunctions/arm_correlate_q31.c +++ b/Source/FilteringFunctions/arm_correlate_q31.c @@ -858,7 +858,7 @@ void arm_correlate_q31( if (((i - j) < srcBLen) && (j < srcALen)) { /* z[i] += x[i-j] * y[j] */ - sum += ((q63_t) pIn1[j] * pIn2[-((int32_t) i - j)]); + sum += ((q63_t) pIn1[j] * pIn2[-((int32_t) i - (int32_t) j)]); } } diff --git a/Source/FilteringFunctions/arm_correlate_q7.c b/Source/FilteringFunctions/arm_correlate_q7.c index 965c5a94..bcd6cdae 100644 --- a/Source/FilteringFunctions/arm_correlate_q7.c +++ b/Source/FilteringFunctions/arm_correlate_q7.c @@ -981,7 +981,7 @@ void arm_correlate_q7( if (((i - j) < srcBLen) && (j < srcALen)) { /* z[i] += x[i-j] * y[j] */ - sum += ((q15_t) pIn1[j] * pIn2[-((int32_t) i - j)]); + sum += ((q15_t) pIn1[j] * pIn2[-((int32_t) i - (int32_t) j)]); } }