Loading...
--- libmalloc/libmalloc-715.100.22/tests/xzone.c
+++ libmalloc/libmalloc-474.0.13/tests/xzone.c
@@ -1,14 +1,38 @@
 #include <darwintest.h>
 #include <darwintest_utils.h>
 
-#include <malloc_private.h>
-
 #include "../src/platform.h"
 
-T_DECL(xzone_debug_dylib, "Ensure xzone malloc tests run with debug dylib",
-		T_META_TAG_VM_NOT_ELIGIBLE,
-		T_META_TAG_XZONE_ONLY)
+T_DECL(zzz_a_xzone_enable_bootargs,
+		"Enable libmalloc boot-args support via ffctl",
+		T_META_ENABLED(CONFIG_XZONE_MALLOC))
 {
-	T_ASSERT_TRUE(malloc_variant_is_debug_4test(),
-			"Test is running with the debug dylib");
+	dt_spawn_t ffctl = dt_spawn_create(NULL);
+	char *ffctl_argv[] = {
+		"/usr/local/bin/ffctl", "--domain=libmalloc", "EnableBootArgs=on", NULL
+	};
+	dt_spawn(ffctl, ffctl_argv,
+			^(char *stdout_line, size_t len) {
+				T_LOG("%.*s", (int)len, stdout_line);
+			},
+			^(char *stderr_line, size_t len) {
+				T_LOG("%.*s", (int)len, stderr_line);
+			});
+
+	bool exited = false;
+	bool signaled = false;
+	int status = 0;
+	int signal = 0;
+	dt_spawn_wait(ffctl, &exited, &signaled, &status, &signal);
+
+	T_LOG("exited: %d, signaled: %d, status: %d, signal: %d",
+			exited, signaled, status, signal);
+	T_ASSERT_TRUE(exited && !signaled && (status == 0) && (signal == 0), NULL);
 }
+
+T_DECL(zzz_b_xzone_malloc_systemwide, "Enable xzone malloc system-wide",
+		T_META_BOOTARGS_SET("malloc_secure_allocator=1"),
+		T_META_ENABLED(CONFIG_XZONE_MALLOC))
+{
+	T_PASS("Successfully booted the OS with xzone malloc enabled system-wide");
+}