Browse Source

LibCore: Switch to AK::secure_zero instead of platform specific APIs

Brian Gianforcaro 3 years ago
parent
commit
b8cad2c9b9
1 changed files with 5 additions and 16 deletions
  1. 5 16
      Userland/Libraries/LibCore/SecretString.cpp

+ 5 - 16
Userland/Libraries/LibCore/SecretString.cpp

@@ -5,12 +5,8 @@
  * SPDX-License-Identifier: BSD-2-Clause
  */
 
-#include <AK/Platform.h>
+#include <AK/Memory.h>
 #include <LibCore/SecretString.h>
-#if defined(AK_OS_MACOS)
-#    define __STDC_WANT_LIB_EXT1__ 1
-#endif
-#include <string.h>
 
 namespace Core {
 
@@ -19,12 +15,9 @@ SecretString SecretString::take_ownership(char*& cstring, size_t length)
     auto buffer = ByteBuffer::copy(cstring, length);
     VERIFY(buffer.has_value());
 
-#if defined(AK_OS_MACOS)
-    memset_s(cstring, length, 0, length);
-#else
-    explicit_bzero(cstring, length);
-#endif
+    secure_zero(cstring, length);
     free(cstring);
+    cstring = nullptr;
 
     return SecretString(buffer.release_value());
 }
@@ -41,14 +34,10 @@ SecretString::SecretString(ByteBuffer&& buffer)
 
 SecretString::~SecretString()
 {
-    // Note: We use explicit_bzero to avoid the zeroing from being optimized out by the compiler,
+    // Note: We use secure_zero to avoid the zeroing from being optimized out by the compiler,
     // which is possible if memset was to be used here.
     if (!m_secure_buffer.is_empty()) {
-#if defined(AK_OS_MACOS)
-        memset_s(m_secure_buffer.data(), m_secure_buffer.size(), 0, m_secure_buffer.size());
-#else
-        explicit_bzero(m_secure_buffer.data(), m_secure_buffer.capacity());
-#endif
+        secure_zero(m_secure_buffer.data(), m_secure_buffer.capacity());
     }
 }