1/* 2 * Test required functions are exported from the pam_winbind.so library 3 */ 4 5#include <stdio.h> 6#include <dlfcn.h> 7 8/* Symbol list to check */ 9 10static char *symlist[] = { 11 "pam_sm_acct_mgmt", 12 "pam_sm_authenticate", 13 "pam_sm_setcred", 14 NULL 15}; 16 17/* Main function */ 18 19int main(int argc, char **argv) 20{ 21 void *handle, *sym; 22 int i, y; 23 24 /* Open library */ 25 26 if (argc != 2) { 27 printf("FAIL: usage '%s sharedlibname'\n", argv[0]); 28 return 1; 29 } 30 31 handle = dlopen(argv[1], RTLD_NOW); 32 33 if (handle == NULL) { 34 printf("FAIL: could not dlopen library: %s\n", dlerror()); 35 return 1; 36 } 37 38 /* Read symbols */ 39 40 for (i = 0; symlist[i] != NULL; i++) { 41 sym = dlsym(handle, symlist[i]); 42 if (sym == NULL) { 43 printf("FAIL: could not resolve symbol '%s': %s\n", 44 symlist[i], dlerror()); 45 return 1; 46 } else { 47 printf("loaded symbol '%s' ok\n", symlist[i]); 48 } 49 } 50 51 /* Clean up */ 52 53 dlclose(handle); 54 return 0; 55} 56