← Commit list

2a3804936d

Viktor Szakats
Viktor Szakats
2026-07-29
SUCCESS Duration: 195s

Subject

src: improve `curlx_memzero()` internal APIs

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

lib/curl_setup.h+10 -24
@@ -1338,20 +1338,6 @@ extern curl_calloc_callback Curl_ccalloc;
(ptr) = NULL; \
} while(0)
-/* Same as curlx_safefree() but zeroes memory before freeing */
-#define curlx_safefreezero(ptr, size) \
- do { \
- curlx_freezero(ptr, size); \
- (ptr) = NULL; \
- } while(0)
-
-/* Same as curlx_safefreezero() but determines length with strlen() */
-#define curlx_safefreezeroz(ptr) \
- do { \
- curlx_freezeroz(ptr); \
- (ptr) = NULL; \
- } while(0)
-
#include <curl/curl.h> /* for CURL_EXTERN, curl_socket_t, mprintf.h */
#ifdef DEBUGBUILD
@@ -1642,14 +1628,14 @@ typedef struct sockaddr_un {
#if defined(_MSC_VER) && defined(NTDDI_VERSION) && \
(NTDDI_VERSION >= 0x0A000010) /* MS SDK 10.0.26100.0+ */
#pragma comment(lib, "volatileaccessu.lib")
-#define curlx_memzero(buf, size) SecureZeroMemory2(buf, size)
+#define curlx_memzero_low(buf, size) SecureZeroMemory2(buf, size)
#else
-#define curlx_memzero(buf, size) SecureZeroMemory(buf, size)
+#define curlx_memzero_low(buf, size) SecureZeroMemory(buf, size)
#endif
#elif defined(HAVE_MEMSET_S)
-#define curlx_memzero(buf, size) (void)memset_s(buf, size, 0, size)
+#define curlx_memzero_low(buf, size) (void)memset_s(buf, size, 0, size)
#elif defined(HAVE_MEMSET_EXPLICIT)
-#define curlx_memzero(buf, size) (void)memset_explicit(buf, 0, size)
+#define curlx_memzero_low(buf, size) (void)memset_explicit(buf, 0, size)
#elif defined(__CYGWIN__) || \
(defined(__NEWLIB__) && !defined(__CLIB2__)) || \
(defined(__GLIBC__) && \
@@ -1657,17 +1643,17 @@ typedef struct sockaddr_un {
(defined(__DragonFly__) && __DragonFly_version >= 500600 /* v5.6+ */) || \
(defined(__FreeBSD__) && __FreeBSD_version >= 1100037 /* v11.0+ */) || \
(defined(__OpenBSD__) && OpenBSD >= 201405 /* v5.5+ */)
-#define curlx_memzero(buf, size) explicit_bzero(buf, size)
+#define curlx_memzero_low(buf, size) explicit_bzero(buf, size)
#elif defined(__NetBSD__) && __NetBSD_Version__ >= 702000000 /* v7.2+ */
-#define curlx_memzero(buf, size) (void)explicit_memset(buf, 0, size)
+#define curlx_memzero_low(buf, size) (void)explicit_memset(buf, 0, size)
#endif
#endif /* !_CURL_LOCAL_MEMZERO */
-#ifndef curlx_memzero
+#ifndef curlx_memzero_low
#define USE_CURLX_MEMZERO
-void curlx_memzero(void *buf, size_t size);
+void curlx_memzero_low(void *buf, size_t size);
#endif
-void curlx_freezero(void *buf, size_t size);
-void curlx_freezeroz(void *buf);
+void curlx_memzero(void *buf, size_t size);
+void curlx_strzero(void *buf);
#endif /* HEADER_CURL_SETUP_H */
lib/curlx/strdup.c+5 -7
@@ -101,7 +101,7 @@ static void *(* const volatile p_curlx_memset)(void *buf, int val,
/* Local fallback in case there is no system function to securely zero a memory
buffer. */
-void curlx_memzero(void *buf, size_t size)
+void curlx_memzero_low(void *buf, size_t size)
{
if(buf)
p_curlx_memset(buf, 0, size);
@@ -109,17 +109,15 @@ void curlx_memzero(void *buf, size_t size)
#endif
/* Free 'buf' after zeroing its content. */
-void curlx_freezero(void *buf, size_t size)
+void curlx_memzero(void *buf, size_t size)
{
if(buf)
- curlx_memzero(buf, size);
- curlx_free(buf);
+ curlx_memzero_low(buf, size);
}
/* Free 'buf' after zeroing its content, where 'buf' is null-terminated. */
-void curlx_freezeroz(void *buf)
+void curlx_strzero(void *buf)
{
if(buf)
- curlx_memzero(buf, strlen(buf));
- curlx_free(buf);
+ curlx_memzero_low(buf, strlen(buf));
}