Make zeroing more portable.
Bug:35849499
Test: None required.
Change-Id: Iadee02a253b491f192c4a8b1cf3e57125ad866a6
diff --git a/keystore/blob.cpp b/keystore/blob.cpp
index e9e6387..a33334e 100644
--- a/keystore/blob.cpp
+++ b/keystore/blob.cpp
@@ -42,11 +42,13 @@
DEFINE_OPENSSL_OBJECT_POINTER(EVP_CIPHER_CTX);
-#ifdef __clang__
+#if defined(__clang__)
#define OPTNONE __attribute__((optnone))
-#else // not __clang__
+#elif defined(__GNUC__)
#define OPTNONE __attribute__((optimize("O0")))
-#endif // not __clang__
+#else
+#error Need a definition for OPTNONE
+#endif
class ArrayEraser {
public:
@@ -54,7 +56,7 @@
OPTNONE ~ArrayEraser() { std::fill(mArr, mArr + mSize, 0); }
private:
- uint8_t* mArr;
+ volatile uint8_t* mArr;
size_t mSize;
};