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 <nisse@webrtc.org>
Commit-Queue: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25245}
diff --git a/rtc_base/buffer.h b/rtc_base/buffer.h
index 2707cdf..f9291b9 100644
--- a/rtc_base/buffer.h
+++ b/rtc_base/buffer.h
@@ -150,6 +150,7 @@
BufferT& operator=(BufferT&& buf) {
RTC_DCHECK(buf.IsConsistent());
+ MaybeZeroCompleteBuffer();
size_ = buf.size_;
capacity_ = buf.capacity_;
using std::swap;
@@ -375,10 +376,10 @@
// 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));
}
}