]>
git.saurik.com Git - apple/dyld.git/blob - testing/test-cases/amfi-interpose.dtest/main.c
1 // BOOT_ARGS: dyld_flags=2
3 // BUILD: $CC interposer.c -dynamiclib -o $BUILD_DIR/libmyalloc.dylib -install_name $RUN_DIR/libmyalloc.dylib
4 // BUILD: $CC main.c $BUILD_DIR/libmyalloc.dylib -o $BUILD_DIR/amfi-interpose.exe
5 // BUILD: $DYLD_ENV_VARS_ENABLE $BUILD_DIR/amfi-interpose.exe
7 // RUN: DYLD_AMFI_FAKE=0x7F ./amfi-interpose.exe
8 // RUN: DYLD_AMFI_FAKE=0x3F ./amfi-interpose.exe
11 // Tests that AMFI_DYLD_OUTPUT_ALLOW_LIBRARY_INTERPOSING bit from AMFI blocks interposing
21 #include "test_support.h"
25 // interposed malloc() doubles alloction size and prefills allocation with '#'
26 char* p1
= malloc(10);
27 bool interposed
= (strncmp(p1
, "####################", 20) == 0);
29 const char* amfiBits
= getenv("DYLD_AMFI_FAKE");
30 if ( amfiBits
== NULL
) {
31 FAIL("amfi-interpose: DYLD_AMFI_FAKE not set");
33 #ifdef AMFI_RETURNS_INTERPOSING_FLAG
34 bool allowInterposing
= (strcmp(amfiBits
, "0x7F") == 0);
36 bool allowInterposing
= true;
39 if ( interposed
== allowInterposing
)
41 else if ( interposed
)
42 FAIL("amfi-interpose: malloc interposed, but amfi said to block it");
44 FAIL("amfi-interpose: malloc not interposed, but amfi said to allow it");