Skip to content

Commit

Permalink
campaignd: fix use-after-free when sending an add-on on Windows
Browse files Browse the repository at this point in the history
This fixes the add-on size being reported as 3,7 gigabytes
(magic number 0xFEEEFEEE that means freed heap memory).
  • Loading branch information
jyrkive committed Mar 7, 2017
1 parent ceee890 commit a6ba521
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions src/server/send_receive_wml_helpers.ipp
Expand Up @@ -31,6 +31,7 @@
#include "simple_wml.hpp"
#include "filesystem.hpp"

#include <memory>
#include <stdexcept>

template<typename Handler, typename ErrorHandler>
Expand Down Expand Up @@ -178,6 +179,7 @@ struct sendfile_op
Handler handler_;
ErrorHandler error_handler_;
bool pending_;
std::shared_ptr<handle_doc<Handler, ErrorHandler>> handle_send_doc_;

void operator()(boost::system::error_code ec, std::size_t)
{
Expand Down Expand Up @@ -255,9 +257,9 @@ void async_send_file(socket_ptr socket, const std::string& filename, Handler han
}

op.overlap_.hEvent = event;
op.handle_send_doc_.reset(new handle_doc<Handler, ErrorHandler>(socket, handler, error_handler, filesize, nullptr));

handle_doc<Handler, ErrorHandler> handle_send_doc(socket, handler, error_handler, filesize, nullptr);
buffers.push_back(boost::asio::buffer(handle_send_doc.data_size->buf, 4));
buffers.push_back(boost::asio::buffer(op.handle_send_doc_->data_size->buf, 4));
async_write(*socket, buffers, op);
}

Expand Down

0 comments on commit a6ba521

Please sign in to comment.