Loading...
--- libmalloc/libmalloc-374.100.5/private/malloc_private.h
+++ libmalloc/libmalloc-425.100.7/private/malloc_private.h
@@ -27,7 +27,11 @@
/* Here be dragons (SPIs) */
#include <mach/boolean.h>
+#include <mach/kern_return.h>
+#include <mach/mach_types.h>
#include <sys/cdefs.h>
+#include <stddef.h>
+#include <stdint.h>
#include <Availability.h>
#include <os/availability.h>
#include <malloc/malloc.h>
@@ -75,6 +79,33 @@
*/
API_AVAILABLE(macos(10.14), ios(12.0), tvos(12.0), watchos(5.0))
int malloc_engaged_nano(void) __result_use_check;
+
+/*
+ * Disables zero-on-free in a process. This has security implications and is
+ * intended to be used only as part of binary compatibility workarounds for
+ * external code. It should be called as early as possible in the process
+ * lifetime, ideally before the process has gone multithreaded. It is not
+ * guaranteed to have any effect.
+ */
+SPI_AVAILABLE(macos(13.0), ios(16.1), tvos(16.1), watchos(9.1))
+void malloc_zero_on_free_disable(void);
+
+/****** Thread-specific libmalloc options ******/
+
+/**
+ * Options struct: zero means "default options".
+ */
+typedef struct {
+ uintptr_t DisableExpensiveDebuggingOptions : 1;
+ uintptr_t DisableProbabilisticGuardMalloc : 1;
+ uintptr_t DisableMallocStackLogging : 1;
+} malloc_thread_options_t;
+
+API_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0), watchos(9.0))
+malloc_thread_options_t malloc_get_thread_options(void) __result_use_check;
+
+API_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0), watchos(9.0))
+void malloc_set_thread_options(malloc_thread_options_t opts);
/****** Crash Reporter integration ******/