Loading...
--- libmalloc/libmalloc-792.1.1/src/vm.c
+++ libmalloc/libmalloc-792.80.2/src/vm.c
@@ -198,6 +198,9 @@
 	const _liblibc_map_type_t type = LIBLIBC_MAP_TYPE_PRIVATE |
 			((flags & VM_FLAGS_ANYWHERE) ? LIBLIBC_MAP_TYPE_NONE : LIBLIBC_MAP_TYPE_FIXED) |
 			((debug_flags & MALLOC_CAN_FAULT) ? LIBLIBC_MAP_TYPE_FAULTABLE : LIBLIBC_MAP_TYPE_NONE) |
+#if CONFIG_MTE
+			((debug_flags & MALLOC_MTE_TAGGABLE) ? LIBLIBC_MAP_TYPE_MEMTAG : LIBLIBC_MAP_TYPE_NONE) |
+#endif // CONFIG_MTE
 			((debug_flags & MALLOC_NO_POPULATE) ? LIBLIBC_MAP_TYPE_NOCOMMIT : LIBLIBC_MAP_TYPE_NONE) |
 			((debug_flags & DISABLE_ASLR) ? LIBLIBC_MAP_TYPE_NORAND : LIBLIBC_MAP_TYPE_NONE);
 	const _liblibc_map_perm_t perm = LIBLIBC_MAP_PERM_READ |
@@ -232,6 +235,11 @@
 		addr = (uintptr_t)malloc_guarded_range_config.base_address;
 	}
 
+#if CONFIG_MTE
+	if (debug_flags & MALLOC_MTE_TAGGABLE) {
+		flags |= VM_FLAGS_MTE;
+	}
+#endif
 
 	mach_vm_address_t vm_addr = addr;
 	mach_vm_offset_t allocation_mask = ((mach_vm_offset_t)1 << align) - 1;
@@ -288,6 +296,11 @@
 		alloc_flags |= VM_FLAGS_PURGABLE;
 	}
 
+#if CONFIG_MTE
+	if (debug_flags & MALLOC_MTE_TAGGABLE) {
+		alloc_flags |= VM_FLAGS_MTE;
+	}
+#endif
 
 	if (allocation_size < size) { // size_t arithmetic wrapped!
 		return NULL;