Securely clear memory containing key information / passwords before freeing.
The previously used "memset(ptr, 0, size)" can get optimized away by compilers
if "ptr" is not used afterwards.
A new class "ZeroOnFreeBuffer" is introduced that can hold sensitive data and
that automatically clears underlying memory when it's no longer used.
Bug: webrtc:8806, webrtc:8897, webrtc:8905
Change-Id: Iedddddf80790f9af0addaab3346ec5bff102917d
Reviewed-on: https://webrtc-review.googlesource.com/41941
Commit-Queue: Joachim Bauch <jbauch@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22334}
diff --git a/rtc_base/BUILD.gn b/rtc_base/BUILD.gn
index e38b713..7e6a23d 100644
--- a/rtc_base/BUILD.gn
+++ b/rtc_base/BUILD.gn
@@ -259,6 +259,8 @@
"timeutils.cc",
"timeutils.h",
"trace_event.h",
+ "zero_memory.cc",
+ "zero_memory.h",
]
deps += [
@@ -675,8 +677,6 @@
"stream.h",
"thread.cc",
"thread.h",
- "zero_memory.cc",
- "zero_memory.h",
]
visibility = [
@@ -1002,6 +1002,7 @@
"timestampaligner_unittest.cc",
"timeutils_unittest.cc",
"virtualsocket_unittest.cc",
+ "zero_memory_unittest.cc",
]
deps = [
":checks",
@@ -1120,7 +1121,6 @@
"stream_unittest.cc",
"testclient_unittest.cc",
"thread_unittest.cc",
- "zero_memory_unittest.cc",
]
if (is_win) {
sources += [