From: David Zafman Date: Thu, 13 Nov 2014 01:43:24 +0000 (-0800) Subject: librados: Fix operator= null ptr references X-Git-Tag: v0.89~11 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=cba4ed44f2a4a93b0e7caca33571c46be92ec5b2;p=ceph.git librados: Fix operator= null ptr references Fixes: #10082 dzafman-2014-11-13_10:42:58-rgw-wip-10082-testing-basic-multi Reviewed-by: Sage Weil Signed-off-by: David Zafman --- diff --git a/src/librados/librados.cc b/src/librados/librados.cc index 66663b0c43da..1e795be5e1b5 100644 --- a/src/librados/librados.cc +++ b/src/librados/librados.cc @@ -647,6 +647,7 @@ librados::NObjectIterator::~NObjectIterator() librados::NObjectIterator::NObjectIterator(const NObjectIterator &rhs) { if (rhs.impl == NULL) { + delete impl; impl = NULL; return; } @@ -656,6 +657,11 @@ librados::NObjectIterator::NObjectIterator(const NObjectIterator &rhs) librados::NObjectIterator& librados::NObjectIterator::operator=(const librados::NObjectIterator &rhs) { + if (rhs.impl == NULL) { + delete impl; + impl = NULL; + return *this; + } if (impl == NULL) impl = new NObjectIteratorImpl(); *impl = *(rhs.impl); @@ -4507,6 +4513,7 @@ librados::ListObject::ListObject(librados::ListObjectImpl *i): impl(i) librados::ListObject::ListObject(const ListObject& rhs) { if (rhs.impl == NULL) { + delete impl; impl = NULL; return; } @@ -4516,6 +4523,11 @@ librados::ListObject::ListObject(const ListObject& rhs) librados::ListObject& librados::ListObject::operator=(const ListObject& rhs) { + if (rhs.impl == NULL) { + delete impl; + impl = NULL; + return *this; + } if (impl == NULL) impl = new ListObjectImpl(); *impl = *(rhs.impl);