[*] Protocol stack: harden these/check for out of memory

This commit is contained in:
Reece Wilson 2023-10-24 11:59:55 +01:00
parent cef8259bb1
commit efd4da861a

View File

@ -138,7 +138,15 @@ namespace Aurora::IO::Protocol
EStreamError Write(const Memory::MemoryViewStreamRead &parameters) override
{
return pStack.lock()->DoTick(AuMakeSharedThrow<AuByteBuffer>(parameters), pParent.lock()) ?
auto pCopy = AuMakeShared<AuByteBuffer>(parameters);
if (!pCopy ||
!(*pCopy.get()))
{
return EStreamError::eErrorOutOfMemory;
}
return pStack.lock()->DoTick(pCopy, pParent.lock()) ?
EStreamError::eErrorNone :
EStreamError::eErrorStreamInterrupted;
}
@ -279,7 +287,15 @@ namespace Aurora::IO::Protocol
EStreamError Write(const Memory::MemoryViewStreamRead &parameters) override
{
return pStack.lock()->DoTick(AuMakeSharedThrow<AuByteBuffer>(parameters), pParent.lock()) ?
auto pCopy = AuMakeShared<AuByteBuffer>(parameters);
if (!pCopy ||
!(*pCopy.get()))
{
return EStreamError::eErrorOutOfMemory;
}
return pStack.lock()->DoTick(pCopy, pParent.lock()) ?
EStreamError::eErrorNone :
EStreamError::eErrorStreamInterrupted;
}
@ -390,7 +406,15 @@ namespace Aurora::IO::Protocol
EStreamError Write(const Memory::MemoryViewStreamRead &parameters) override
{
return pStack.lock()->DoTick(AuMakeSharedThrow<AuByteBuffer>(parameters), pParent.lock()) ?
auto pCopy = AuMakeShared<AuByteBuffer>(parameters);
if (!pCopy ||
!(*pCopy.get()))
{
return EStreamError::eErrorOutOfMemory;
}
return pStack.lock()->DoTick(pCopy, pParent.lock()) ?
EStreamError::eErrorNone :
EStreamError::eErrorStreamInterrupted;
}