1/*tests cac_RegSetKeySecurity()*/ 2 3#include "libmsrpc.h" 4#include "test_util.h" 5 6int main(int argc, char **argv) { 7 CacServerHandle *hnd = NULL; 8 TALLOC_CTX *mem_ctx = NULL; 9 10 fstring tmp; 11 12 mem_ctx = talloc_init("regsetval"); 13 14 hnd = cac_NewServerHandle(True); 15 16 cac_SetAuthDataFn(hnd, cactest_GetAuthDataFn); 17 18 cac_parse_cmd_line(argc, argv, hnd); 19 20 if(!cac_Connect(hnd, NULL)) { 21 fprintf(stderr, "Could not connect to server %s. Error: %s\n", hnd->server, nt_errstr(hnd->status)); 22 exit(-1); 23 } 24 25 struct RegOpenKey rok; 26 ZERO_STRUCT(rok); 27 28 printf("enter key to query: "); 29 cactest_readline(stdin, tmp); 30 31 rok.in.name = talloc_strdup(mem_ctx, tmp); 32 rok.in.access = REG_KEY_ALL; 33 34 if(!cac_RegOpenKey(hnd, mem_ctx, &rok)) { 35 fprintf(stderr, "Could not open key %s. Error %s\n", rok.in.name, nt_errstr(hnd->status)); 36 exit(-1); 37 } 38 39 struct RegGetKeySecurity rks; 40 ZERO_STRUCT(rks); 41 42 rks.in.key = rok.out.key; 43 rks.in.info_type = ALL_SECURITY_INFORMATION; 44 45 if(!cac_RegGetKeySecurity(hnd, mem_ctx, &rks)) { 46 fprintf(stderr, "Could not query security for %s. Error: %s\n", rok.in.name, nt_errstr(hnd->status)); 47 goto done; 48 } 49 50 printf("resetting key security...\n"); 51 52 struct RegSetKeySecurity rss; 53 ZERO_STRUCT(rss); 54 55 rss.in.key = rok.out.key; 56 rss.in.info_type = ALL_SECURITY_INFORMATION; 57 rss.in.size = rks.out.size; 58 rss.in.descriptor = rks.out.descriptor; 59 60 if(!cac_RegSetKeySecurity(hnd, mem_ctx, &rss)) { 61 fprintf(stderr, "Could not set security. Error %s\n", nt_errstr(hnd->status)); 62 } 63 64done: 65 cac_RegClose(hnd, mem_ctx, rok.out.key); 66 67 cac_FreeHandle(hnd); 68 69 talloc_destroy(mem_ctx); 70 71 return 0; 72} 73 74 75