From a55c879c1bd3314495facac267e673df226b32c8 Mon Sep 17 00:00:00 2001 From: f4exb Date: Wed, 17 Mar 2021 01:30:17 +0100 Subject: [PATCH] DATV: leandvb: safer cnr_fft --- plugins/channelrx/demoddatv/leansdr/sdr.h | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/plugins/channelrx/demoddatv/leansdr/sdr.h b/plugins/channelrx/demoddatv/leansdr/sdr.h index d2b2e8bb9..8c544f2fc 100644 --- a/plugins/channelrx/demoddatv/leansdr/sdr.h +++ b/plugins/channelrx/demoddatv/leansdr/sdr.h @@ -1938,7 +1938,10 @@ struct cnr_fft : runnable T s = 0; for (int i = i0; i <= i1; ++i) - s += avgpower[i & (fft.n - 1)]; + { + int j = i < 0 ? fft.n + i : i; + s += avgpower[j < 0 ? 0 : j >= fft.n ? fft.n-1 : j]; + } return s / (i1 - i0 + 1); } @@ -1948,7 +1951,10 @@ struct cnr_fft : runnable int l = 0; for (int i = i0; i <= i1; ++i, ++l) - sorted[l] = avgpower[i & (fft.n - 1)]; + { + int j = i < 0 ? fft.n + i : i; + sorted[l] = avgpower[j < 0 ? 0 : j >= fft.n ? fft.n-1 : j]; + } std::sort(sorted, &sorted[l]); int m = l/5;