Implement and use secure memset to clear sensitive buffers.
Ordinary memset can be optimized away, leaking sensitive data to other
processes.
Change-Id: If4b51e342ef1f21d7e5fa8907bb0534b17bf295b
diff --git a/authorization_set.cpp b/authorization_set.cpp
index d147ef3..1fb9d82 100644
--- a/authorization_set.cpp
+++ b/authorization_set.cpp
@@ -21,6 +21,7 @@
#include <assert.h>
#include "authorization_set.h"
+#include "google_keymaster_utils.h"
namespace keymaster {
@@ -331,9 +332,9 @@
void AuthorizationSet::FreeData() {
if (elems_ != NULL)
- memset(elems_, 0, elems_size_ * sizeof(keymaster_key_param_t));
+ memset_s(elems_, 0, elems_size_ * sizeof(keymaster_key_param_t));
if (indirect_data_ != NULL)
- memset(indirect_data_, 0, indirect_data_size_);
+ memset_s(indirect_data_, 0, indirect_data_size_);
delete[] elems_;
delete[] indirect_data_;