Skip to content

Commit 09cdd04

Browse files
guimardclaude
andcommitted
fix(macos): use memset_s instead of explicit_bzero
explicit_bzero is not available on macOS. Use memset_s (C11) instead, which is available since macOS 10.9. Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 030e1d7 commit 09cdd04

1 file changed

Lines changed: 10 additions & 3 deletions

File tree

src/secure_string.h

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,13 @@
55
#include <cstring>
66

77
// Platform-specific secure memory clearing
8-
#if defined(__APPLE__) || defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__)
9-
#include <strings.h> // for explicit_bzero on POSIX
8+
#if defined(__APPLE__)
9+
// macOS: use memset_s (C11) - available since macOS 10.9
10+
#define __STDC_WANT_LIB_EXT1__ 1
11+
#include <string.h>
12+
#define HAVE_MEMSET_S 1
13+
#elif defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__)
14+
#include <strings.h> // for explicit_bzero
1015
#define HAVE_EXPLICIT_BZERO 1
1116
#elif defined(_WIN32)
1217
#include <windows.h>
@@ -84,7 +89,9 @@ class SecureString {
8489
// Securely zero out the string contents using platform-specific functions
8590
void secure_clear() {
8691
if (!data_.empty()) {
87-
#if defined(HAVE_EXPLICIT_BZERO)
92+
#if defined(HAVE_MEMSET_S)
93+
memset_s(&data_[0], data_.size(), 0, data_.size());
94+
#elif defined(HAVE_EXPLICIT_BZERO)
8895
explicit_bzero(&data_[0], data_.size());
8996
#elif defined(HAVE_SECURE_ZERO_MEMORY)
9097
SecureZeroMemory(&data_[0], data_.size());

0 commit comments

Comments
 (0)