From e6ec47eba3d9ab8ba343ebd09a0bf6dfc3b80033 Mon Sep 17 00:00:00 2001 From: Gary Miguel Date: Fri, 24 Jun 2022 19:38:08 +0000 Subject: [PATCH] fix onesided destination overflow --- onnxruntime/core/providers/cpu/signal/dft.cc | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/onnxruntime/core/providers/cpu/signal/dft.cc b/onnxruntime/core/providers/cpu/signal/dft.cc index 5652d82167d13..97d7e19a7c4b1 100644 --- a/onnxruntime/core/providers/cpu/signal/dft.cc +++ b/onnxruntime/core/providers/cpu/signal/dft.cc @@ -113,7 +113,6 @@ static Status fft_radix2(OpKernelContext* /*ctx*/, const Tensor* X, Tensor* Y, s std::complex* Y_data; if (is_onesided) { if (temp_output.size() != dft_length) { - temp_output.clear(); temp_output.resize(dft_length); } Y_data = temp_output.data(); @@ -126,7 +125,6 @@ static Status fft_radix2(OpKernelContext* /*ctx*/, const Tensor* X, Tensor* Y, s // Create vandermonde matrix V ordered with the bit-reversed permutation if (V.size() != dft_length) { - V.clear(); V.resize(dft_length); for (size_t i = 0; i < dft_length; i++) { size_t bit_reversed_index = bit_reverse(i, significant_bits); @@ -172,8 +170,9 @@ static Status fft_radix2(OpKernelContext* /*ctx*/, const Tensor* X, Tensor* Y, s } if (is_onesided) { + const size_t output_size = (dft_length >> 1) + 1; auto destination = reinterpret_cast*>(Y->MutableDataRaw()) + Y_offset; - for (size_t i = 0; i < dft_length; i++) { + for (size_t i = 0; i < output_size; i++) { *(destination + Y_stride * i) = *(Y_data + i * Y_data_stride); } }