diff options
author | Daniil Cherednik <dan.cherednik@gmail.com> | 2025-07-19 22:17:12 +0200 |
---|---|---|
committer | Daniil Cherednik <dan.cherednik@gmail.com> | 2025-07-19 22:17:12 +0200 |
commit | b17df2955f9d23b6b6b7adfd85d2ce1449512e35 (patch) | |
tree | 9076e58d67e5b08a8e6c252e82b90493c257d5f0 | |
parent | a9821a6b4e26939c679182608ed745249894956e (diff) | |
download | atracdenc-b17df2955f9d23b6b6b7adfd85d2ce1449512e35.tar.gz |
Fix multiple uninitialized memory usage.
-rw-r--r-- | src/atrac/at3p/at3p.cpp | 8 | ||||
-rw-r--r-- | src/atrac/at3p/at3p_gha.cpp | 6 | ||||
-rw-r--r-- | src/atrac/atrac_scale.cpp | 2 | ||||
-rw-r--r-- | src/atrac1denc.cpp | 3 | ||||
-rw-r--r-- | src/atrac1denc.h | 6 | ||||
-rw-r--r-- | src/atrac3denc.h | 2 |
6 files changed, 17 insertions, 10 deletions
diff --git a/src/atrac/at3p/at3p.cpp b/src/atrac/at3p/at3p.cpp index 0cdcdd3..9b32ffa 100644 --- a/src/atrac/at3p/at3p.cpp +++ b/src/atrac/at3p/at3p.cpp @@ -61,10 +61,10 @@ private: float* NextBuf = Buf1; float* CurBuf = nullptr; - float Buf1[TAt3PEnc::NumSamples]; - float Buf2[TAt3PEnc::NumSamples]; - float PrevBuf[TAt3PEnc::NumSamples]; - TAt3pMDCT::THistBuf MdctBuf; + float Buf1[TAt3PEnc::NumSamples] = {0}; + float Buf2[TAt3PEnc::NumSamples] = {0}; + float PrevBuf[TAt3PEnc::NumSamples] = {0}; + TAt3pMDCT::THistBuf MdctBuf = {{{0}}}; std::vector<float> Specs; }; diff --git a/src/atrac/at3p/at3p_gha.cpp b/src/atrac/at3p/at3p_gha.cpp index 61603fb..dd06ca2 100644 --- a/src/atrac/at3p/at3p_gha.cpp +++ b/src/atrac/at3p/at3p_gha.cpp @@ -96,6 +96,8 @@ class TGhaProcessor : public IGhaProcessor { TChannelGhaCbCtx(TChannelData* data, size_t sb) : Data(data) , Sb(sb) + , AdjustStatus(EAdjustStatus::Ok) + , FrameSz(0) {} TChannelData* Data; size_t Sb; @@ -105,7 +107,7 @@ class TGhaProcessor : public IGhaProcessor { Ok, Repeat } AdjustStatus; - size_t FrameSz = 0; + size_t FrameSz; }; public: @@ -129,6 +131,8 @@ public: StaticInited = true; } + memset(&ChUnit, 0, sizeof(ChUnit)); + for (size_t ch = 0; ch < 2; ch++) { ChUnit.channels[ch].tones_info = &ChUnit.channels[ch].tones_info_hist[0][0]; ChUnit.channels[ch].tones_info_prev = &ChUnit.channels[ch].tones_info_hist[1][0]; diff --git a/src/atrac/atrac_scale.cpp b/src/atrac/atrac_scale.cpp index b3cb324..840ab5b 100644 --- a/src/atrac/atrac_scale.cpp +++ b/src/atrac/atrac_scale.cpp @@ -35,7 +35,7 @@ using std::endl; using std::abs; -static const float MAX_SCALE = 1.0; +static constexpr float MAX_SCALE = 1.0; float QuantMantisas(const float* in, const uint32_t first, const uint32_t last, const float mul, bool ea, int* const mantisas) { diff --git a/src/atrac1denc.cpp b/src/atrac1denc.cpp index 5901286..992af27 100644 --- a/src/atrac1denc.cpp +++ b/src/atrac1denc.cpp @@ -36,6 +36,9 @@ using std::vector; TAtrac1Encoder::TAtrac1Encoder(TCompressedOutputPtr&& aea, TAtrac1EncodeSettings&& settings) : Aea(std::move(aea)) , Settings(std::move(settings)) + , PcmBufLow({{{0}}}) + , PcmBufMid({{{0}}}) + , PcmBufHi({{{0}}}) , LoudnessCurve(CreateLoudnessCurve(TAtrac1Data::NumSamples)) { } diff --git a/src/atrac1denc.h b/src/atrac1denc.h index e261dec..c3b5f11 100644 --- a/src/atrac1denc.h +++ b/src/atrac1denc.h @@ -59,9 +59,9 @@ class TAtrac1Encoder : public IProcessor, public TAtrac1MDCT { TCompressedOutputPtr Aea; const NAtrac1::TAtrac1EncodeSettings Settings; - float PcmBufLow[2][256 + 16]; - float PcmBufMid[2][256 + 16]; - float PcmBufHi[2][512 + 16]; + std::array<std::array<float, 256 + 16>, 2> PcmBufLow; + std::array<std::array<float, 256 + 16>, 2> PcmBufMid; + std::array<std::array<float, 512 + 16>, 2> PcmBufHi; Atrac1AnalysisFilterBank<float> AnalysisFilterBank[2]; diff --git a/src/atrac3denc.h b/src/atrac3denc.h index fb06f15..3f136d5 100644 --- a/src/atrac3denc.h +++ b/src/atrac3denc.h @@ -87,7 +87,7 @@ class TAtrac3Encoder : public IProcessor, public TAtrac3MDCT { const std::vector<float> LoudnessCurve; TDelayBuffer<float, 8, 256> PcmBuffer; //8 = 2 channels * 4 bands - float PrevPeak[2][4]; //2 channel, 4 band - peak level (after windowing), used to check overflow during scalling + float PrevPeak[2][4] = {{0.0}}; //2 channel, 4 band - peak level (after windowing), used to check overflow during scalling Atrac3AnalysisFilterBank<float> AnalysisFilterBank[2]; |