libnetapi: Fix use after free
Fix 'fImpl' is used after delete in BNetBuffer::operator= (GetImpl() returns fImpl), when it is used with self assignment. Pointed out by Clang Static Analyzer. Change-Id: Ic80a4ce73879062581b9241f84a4340919d281b9 Reviewed-on: https://review.haiku-os.org/c/haiku/+/3393 Reviewed-by: Jérôme Duval <[email protected]>
This commit is contained in:
committed by
Adrien Destugues
parent
a756a8ad1b
commit
6c016dc54a
@@ -66,12 +66,13 @@ BNetBuffer::BNetBuffer(BMessage* archive) :
|
|||||||
BNetBuffer&
|
BNetBuffer&
|
||||||
BNetBuffer::operator=(const BNetBuffer& buffer)
|
BNetBuffer::operator=(const BNetBuffer& buffer)
|
||||||
{
|
{
|
||||||
|
if (&buffer != this) {
|
||||||
delete fImpl;
|
delete fImpl;
|
||||||
|
|
||||||
fImpl = new (std::nothrow) DynamicBuffer(*buffer.GetImpl());
|
fImpl = new (std::nothrow) DynamicBuffer(*buffer.GetImpl());
|
||||||
if (fImpl != NULL)
|
if (fImpl != NULL)
|
||||||
fInit = fImpl->InitCheck();
|
fInit = fImpl->InitCheck();
|
||||||
|
}
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user