AK: Add safe memset() wrapper to ByteBuffer

In the interest memory safety and of removing as many
of foot guns as possible (like raw memset's which are
notorious for typo's), a zeroing method seems like a
useful utility to have on a buffer class.
This commit is contained in:
Brian Gianforcaro 2021-02-21 02:07:14 -08:00 committed by Andreas Kling
parent 86a3363ddf
commit 5e84320ecb

View file

@ -89,6 +89,8 @@ public:
void grow(size_t size);
void zero_fill();
private:
explicit ByteBufferImpl(size_t);
ByteBufferImpl(const void*, size_t);
@ -248,6 +250,11 @@ public:
__builtin_memcpy(this->data() + offset, data, data_size);
}
void zero_fill()
{
m_impl->zero_fill();
}
operator Bytes() { return bytes(); }
operator ReadonlyBytes() const { return bytes(); }
@ -295,6 +302,11 @@ inline void ByteBufferImpl::grow(size_t size)
kfree(old_data);
}
inline void ByteBufferImpl::zero_fill()
{
__builtin_memset(m_data, 0, m_size);
}
inline NonnullRefPtr<ByteBufferImpl> ByteBufferImpl::create_uninitialized(size_t size)
{
return ::adopt(*new ByteBufferImpl(size));