From 45828058f4a5e235e9caa9861027f3a9e1682fae Mon Sep 17 00:00:00 2001 From: Tobias Markmann Date: Tue, 26 Jan 2016 16:46:00 +0100 Subject: Fix ASAN reported heap-use-after-free in FileTransferTest Test-Information: ./scons test=system passes without any ASAN reports on OS X 10.11.3. Change-Id: I6825414e2f3c5e5aec48289395f44ccdc14d8f95 diff --git a/Swiften/QA/FileTransferTest/FileTransferTest.cpp b/Swiften/QA/FileTransferTest/FileTransferTest.cpp index 13b6eff..8597033 100644 --- a/Swiften/QA/FileTransferTest/FileTransferTest.cpp +++ b/Swiften/QA/FileTransferTest/FileTransferTest.cpp @@ -96,8 +96,7 @@ class FileTransferTest { delete receiverTracer_; // Free file-transfer objects so file handles are closed and files can be removed afterwards. - incomingFileTransfers_.clear(); - outgoingFileTransfer_.reset(); + assert(!outgoingFileTransfer_ && incomingFileTransfers_.empty()); if(boost::filesystem::exists(sendFilePath_)) { boost::filesystem::remove(sendFilePath_); @@ -189,6 +188,11 @@ class FileTransferTest { if (error) { std::cout << this << " " << "handleSenderDisconnected: error: " << error.get() << std::endl; } + + // All file-transfers related to a Client instance need to be freed + // *before* freeing the Client instance. + outgoingFileTransfer_.reset(); + sender_.reset(); if (!sender_ && !receiver_) { eventLoop->stop(); @@ -199,6 +203,11 @@ class FileTransferTest { if (error) { std::cout << this << " " << "handleReceiverDisconnected: error: " << error.get() << std::endl; } + + // All file-transfers related to a Client instance need to be freed + // *before* freeing the Client instance. + incomingFileTransfers_.clear(); + receiver_.reset(); if (!sender_ && !receiver_) { eventLoop->stop(); -- cgit v0.10.2-6-g49f6