From 16ab25d5780c8100309c44eb60d505afe5c528db Mon Sep 17 00:00:00 2001 From: Denis <146707790+dnzbk@users.noreply.github.com> Date: Fri, 26 Jan 2024 15:23:39 +0300 Subject: [PATCH] Fix: possible memory corruption (#148) - fixed possible memory corruption inspired by reports from nzbget-ng --- daemon/util/NString.cpp | 9 ++++++++- lib/par2/reedsolomon.h | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/daemon/util/NString.cpp b/daemon/util/NString.cpp index 584b1320..df41ec70 100644 --- a/daemon/util/NString.cpp +++ b/daemon/util/NString.cpp @@ -155,7 +155,14 @@ void CString::AppendFmtV(const char* format, va_list ap) int curLen = Length(); int newLen = curLen + addLen; - m_data = (char*)realloc(m_data, newLen + 1); + + char* newData = (char*)realloc(m_data, newLen + 1); + if (newData == nullptr) + { + return; + } + + m_data = newData; vsnprintf(m_data + curLen, newLen + 1, format, ap2); diff --git a/lib/par2/reedsolomon.h b/lib/par2/reedsolomon.h index 306bb8d2..591d3c86 100644 --- a/lib/par2/reedsolomon.h +++ b/lib/par2/reedsolomon.h @@ -122,7 +122,7 @@ inline ReedSolomon::ReedSolomon(std::ostream& cout, std::ostream& cerr) : datamissingindex = 0; database = 0; - outputrows.empty(); + outputrows.clear(); outputcount = 0;