aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniil Cherednik <dan.cherednik@gmail.com>2025-07-19 22:17:12 +0200
committerDaniil Cherednik <dan.cherednik@gmail.com>2025-07-19 22:17:12 +0200
commitb17df2955f9d23b6b6b7adfd85d2ce1449512e35 (patch)
tree9076e58d67e5b08a8e6c252e82b90493c257d5f0
parenta9821a6b4e26939c679182608ed745249894956e (diff)
downloadatracdenc-b17df2955f9d23b6b6b7adfd85d2ce1449512e35.tar.gz
Fix multiple uninitialized memory usage.
-rw-r--r--src/atrac/at3p/at3p.cpp8
-rw-r--r--src/atrac/at3p/at3p_gha.cpp6
-rw-r--r--src/atrac/atrac_scale.cpp2
-rw-r--r--src/atrac1denc.cpp3
-rw-r--r--src/atrac1denc.h6
-rw-r--r--src/atrac3denc.h2
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];