From 5826f79980b82dea9dd4f74546cd85fddd80d7c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Tue, 15 Apr 2014 19:16:18 +0200 Subject: [PATCH] audioresample: Fix out of bounds memory accesses --- gst/audioresample/resample_sse.h | 181 ++++++++++++++++++++----------- 1 file changed, 115 insertions(+), 66 deletions(-) diff --git a/gst/audioresample/resample_sse.h b/gst/audioresample/resample_sse.h index 36522a3659..e60de239e5 100644 --- a/gst/audioresample/resample_sse.h +++ b/gst/audioresample/resample_sse.h @@ -41,36 +41,53 @@ #define OVERRIDE_INNER_PRODUCT_SINGLE static inline float inner_product_single(const float *a, const float *b, unsigned int len) { - int i; - float ret; + int i = 0; + float ret = 0; __m128 sum = _mm_setzero_ps(); - for (i=0;i 7) { - sum = _mm_add_ps(sum, _mm_mul_ps(_mm_loadu_ps(a+i), _mm_loadu_ps(b+i))); - sum = _mm_add_ps(sum, _mm_mul_ps(_mm_loadu_ps(a+i+4), _mm_loadu_ps(b+i+4))); + for (;i 1) { - sum = _mm_add_ps(sum, _mm_mul_ps(_mm_load1_ps(a+i), _mm_loadu_ps(b+i*oversample))); - sum = _mm_add_ps(sum, _mm_mul_ps(_mm_load1_ps(a+i+1), _mm_loadu_ps(b+(i+1)*oversample))); + for(;i 3) { - sum = _mm_add_pd(sum, _mm_mul_pd(_mm_loadu_pd(a+i), _mm_loadu_pd(b+i))); - sum = _mm_add_pd(sum, _mm_mul_pd(_mm_loadu_pd(a+i+2), _mm_loadu_pd(b+i+2))); + for (;i 7) + { + for (;i 1) { - t = _mm_mul_pd(_mm_load1_pd(a+i), _mm_loadu_pd(b+i*oversample)); - sum1 = _mm_add_pd(sum1, t); - sum2 = _mm_add_pd(sum2, _mm_unpackhi_pd(t, t)); + for(;i 1) + { + for(;i