From 9d24795ef31a3de15994c828a8718db0c31ce902 Mon Sep 17 00:00:00 2001 From: Karl Wiberg Date: Wed, 10 Oct 2018 12:52:17 +0200 Subject: [PATCH] rtc::ZeroOnFreeBuffer: Don't forget to zero memory we free in operator= Bug: webrtc:9857 Change-Id: I279e8ea6da4fb9a71e501c0ce01f70e9ebec8c84 Reviewed-on: https://webrtc-review.googlesource.com/c/105042 Reviewed-by: Niels Moller Commit-Queue: Karl Wiberg Cr-Commit-Position: refs/heads/master@{#25245} --- rtc_base/buffer.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/rtc_base/buffer.h b/rtc_base/buffer.h index 2707cdfb86..f9291b99e5 100644 --- a/rtc_base/buffer.h +++ b/rtc_base/buffer.h @@ -150,6 +150,7 @@ class BufferT { BufferT& operator=(BufferT&& buf) { RTC_DCHECK(buf.IsConsistent()); + MaybeZeroCompleteBuffer(); size_ = buf.size_; capacity_ = buf.capacity_; using std::swap; @@ -375,10 +376,10 @@ class BufferT { // Zero the complete buffer if template argument "ZeroOnFree" is true. void MaybeZeroCompleteBuffer() { - if (ZeroOnFree && capacity_) { + if (ZeroOnFree && capacity_ > 0) { // It would be sufficient to only zero "size_" elements, as all other // methods already ensure that the unused capacity contains no sensitive - // data - but better safe than sorry. + // data---but better safe than sorry. ExplicitZeroMemory(data_.get(), capacity_ * sizeof(T)); } }