From 5e84320ecb87a96d00b768b4d4b9277fb9e5f7d0 Mon Sep 17 00:00:00 2001 From: Brian Gianforcaro Date: Sun, 21 Feb 2021 02:07:14 -0800 Subject: [PATCH] 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. --- AK/ByteBuffer.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/AK/ByteBuffer.h b/AK/ByteBuffer.h index b4b05e87fc..feabaeaa4c 100644 --- a/AK/ByteBuffer.h +++ b/AK/ByteBuffer.h @@ -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::create_uninitialized(size_t size) { return ::adopt(*new ByteBufferImpl(size));