]> git.saurik.com Git - apple/dyld.git/blame - unit-tests/test-cases/dlopen-codesign-dynamic/main.c
dyld-239.4.tar.gz
[apple/dyld.git] / unit-tests / test-cases / dlopen-codesign-dynamic / main.c
CommitLineData
2fd3f4e8
A
1#include <stdio.h>
2#include <stdlib.h>
3#include <dlfcn.h>
4#include <unistd.h>
5#include <stdlib.h>
6#include <string.h>
7
8#include <mach/mach.h>
9#include <System/sys/codesign.h>
10
11#include "test.h"
12
13
14int main()
15{
16#if ENFORCE
17 uint32_t flags = CS_ENFORCEMENT | CS_KILL;
18 if ( csops(0, CS_OPS_SET_STATUS, &flags, sizeof(flags)) != 0 ) {
19 FAIL("dlopen-codesign-dynamic: csops() failed");
20 return EXIT_SUCCESS;
21 }
22
23 void* handle = dlopen("libfoo.dylib", RTLD_LAZY);
24 if ( handle != NULL ) {
25 FAIL("dlopen-codesign-dynamic: load of libfoo.dylib should have failed");
26 return EXIT_SUCCESS;
27 }
28 const char* msg = dlerror();
29 if ( strstr(msg, "signature") == NULL ) {
30 FAIL("dlopen-codesign-dynamic: load of libfoo.dylib failed, but message was wrong: %s", msg);
31 return EXIT_SUCCESS;
32 }
33
34#else
35 void* handle = dlopen("libfoo.dylib", RTLD_LAZY);
36 if ( handle == NULL ) {
37 FAIL("dlopen-codesign-dynamic: load of libfoo.dylib failed");
38 return EXIT_SUCCESS;
39 }
40
41#endif
42
43 PASS("dlopen-codesign-dynamic");
44 return EXIT_SUCCESS;
45}