From: Danny Al-Gaaf Date: Tue, 31 Jan 2017 21:23:28 +0000 (+0100) Subject: RadosStriperImpl.cc: fix double free X-Git-Tag: v12.0.1~462^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ce5493cab0e85acd5a3ac9bebae5cf7741c73d53;p=ceph.git RadosStriperImpl.cc: fix double free Some variables have been already free'd by calling release(), no need to call delete() again on them. CID 1396200 (#1 of 1): Double free (USE_AFTER_FREE) double_free: Calling operator delete frees pointer getxattr_completion which has already been freed. CID 1396206 (#1 of 1): Double free (USE_AFTER_FREE) double_free: Calling operator delete frees pointer getxattr_completion which has already been freed. CID 1396214 (#1 of 1): Double free (USE_AFTER_FREE) double_free: Calling operator delete frees pointer stat_completion which has already been freed. CID 1396218 (#1 of 1): Double free (USE_AFTER_FREE) double_free: Calling operator delete frees pointer stat_completion which has already been freed. Signed-off-by: Danny Al-Gaaf --- diff --git a/src/libradosstriper/RadosStriperImpl.cc b/src/libradosstriper/RadosStriperImpl.cc index dc9cb71a6c9e..ea3be3b145c6 100644 --- a/src/libradosstriper/RadosStriperImpl.cc +++ b/src/libradosstriper/RadosStriperImpl.cc @@ -676,7 +676,6 @@ int libradosstriper::RadosStriperImpl::aio_generic_stat // nothing is really started so cancel everything delete multi_completion; delete cdata; - delete stat_completion; return rc; } // use a regular AioCompletion for the getxattr async call @@ -692,7 +691,6 @@ int libradosstriper::RadosStriperImpl::aio_generic_stat // the async stat is ongoing, so we need to go on // we mark the getxattr as failed in the data object cdata->m_getxattrRC = rc; - delete getxattr_completion; multi_completion->complete_request(rc); multi_completion->put(); return rc;