/ tests / secfuzzer / secfuzzer.m
secfuzzer.m
 1  //
 2  //  secfuzzer.c
 3  //  Security
 4  //
 5  
 6  #import <Foundation/Foundation.h>
 7  #import <stdio.h>
 8  #import <dlfcn.h>
 9  #import <err.h>
10  
11  int
12  main(int argc, char **argv)
13  {
14      int (*function)(const void *data, size_t len) = NULL;
15  
16      if (argc < 2)
17          err(1, "%s library funcation", getprogname());
18  
19      char *libraryName = argv[1];
20      char *funcationName = argv[2];
21      void *library;
22  
23      library = dlopen(libraryName, RTLD_NOW);
24      if (library == NULL)
25          errx(1, "failed to open %s: %s", libraryName, dlerror());
26  
27  
28      function = dlsym(library, funcationName);
29      if (function == NULL)
30          errx(1, "didn't find %s in %s: %s", funcationName, libraryName, dlerror());
31  
32      argc -= 3;
33      argv += 3;
34  
35      while (argc > 0) {
36          @autoreleasepool {
37              NSError *error = NULL;
38              NSData *data = [NSData dataWithContentsOfFile:[NSString stringWithUTF8String:argv[0]] options:0 error:&error];
39              if (data == NULL)
40                  NSLog(@"%s: %@", argv[0], error);
41  
42              function([data bytes], [data length]);
43          }
44          argv++;
45          argc--;
46      }
47      return 0;
48  }