From a0822e02ca08c5fa7cf37c7448a0a647c0e332c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=BCnter=20Obiltschnig?= Date: Tue, 15 Apr 2025 22:11:47 +0200 Subject: [PATCH] fix(Net): A SEGV at Net/src/MultipartReader.cpp:164:1 #4915 --- Net/include/Poco/Net/MultipartReader.h | 3 ++- Net/src/MultipartReader.cpp | 10 +++------- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/Net/include/Poco/Net/MultipartReader.h b/Net/include/Poco/Net/MultipartReader.h index c025065f2..f35c9c337 100644 --- a/Net/include/Poco/Net/MultipartReader.h +++ b/Net/include/Poco/Net/MultipartReader.h @@ -20,6 +20,7 @@ #include "Poco/Net/Net.h" #include "Poco/BufferedStreamBuf.h" +#include #include @@ -150,7 +151,7 @@ private: std::istream& _istr; std::string _boundary; - MultipartInputStream* _pMPI; + std::unique_ptr _pMPI; }; diff --git a/Net/src/MultipartReader.cpp b/Net/src/MultipartReader.cpp index 24f42c341..f3a2f2bba 100644 --- a/Net/src/MultipartReader.cpp +++ b/Net/src/MultipartReader.cpp @@ -175,23 +175,20 @@ MultipartInputStream::~MultipartInputStream() MultipartReader::MultipartReader(std::istream& istr): - _istr(istr), - _pMPI(0) + _istr(istr) { } MultipartReader::MultipartReader(std::istream& istr, const std::string& boundary): _istr(istr), - _boundary(boundary), - _pMPI(0) + _boundary(boundary) { } MultipartReader::~MultipartReader() { - delete _pMPI; } @@ -209,8 +206,7 @@ void MultipartReader::nextPart(MessageHeader& messageHeader) throw MultipartException("No more parts available"); } parseHeader(messageHeader); - delete _pMPI; - _pMPI = new MultipartInputStream(_istr, _boundary); + _pMPI = std::make_unique(_istr, _boundary); }