• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/router/samba-3.0.25b/examples/libmsrpc/test/lsa/
1/*enumerates privileges*/
2
3#include "libmsrpc.h"
4#include "includes.h"
5
6#define MAX_STRING_LEN 50;
7
8int main() {
9   CacServerHandle *hnd = NULL;
10   TALLOC_CTX *mem_ctx  = NULL;
11   POLICY_HND *lsa_pol  = NULL;
12
13   int i;
14
15   mem_ctx = talloc_init("lsatrust");
16
17   hnd = cac_NewServerHandle(True);
18
19   printf("Server: ");
20   fscanf(stdin, "%s", hnd->server);
21
22   printf("Connecting to server....\n");
23
24   if(!cac_Connect(hnd, NULL)) {
25      fprintf(stderr, "Could not connect to server.\n Error: %s\n errno %s\n", nt_errstr(hnd->status), strerror(errno));
26      cac_FreeHandle(hnd);
27      exit(-1);
28   }
29
30   printf("Connected to server\n");
31
32   struct LsaOpenPolicy lop;
33   ZERO_STRUCT(lop);
34
35   lop.in.access = SEC_RIGHT_MAXIMUM_ALLOWED;
36   lop.in.security_qos = True;
37
38
39   if(!cac_LsaOpenPolicy(hnd, mem_ctx, &lop)) {
40      fprintf(stderr, "Could not open policy handle.\n Error: %s\n", nt_errstr(hnd->status));
41      cac_FreeHandle(hnd);
42      exit(-1);
43   }
44
45   lsa_pol = lop.out.pol;
46
47   printf("Enumerating Privileges\n");
48
49   struct LsaEnumPrivileges ep;
50   ZERO_STRUCT(ep);
51
52   ep.in.pol = lsa_pol;
53   ep.in.pref_max_privs = 50;
54
55   while(cac_LsaEnumPrivileges(hnd, mem_ctx, &ep)) {
56      printf(" Enumerated %d privileges\n", ep.out.num_privs);
57
58      for(i = 0; i < ep.out.num_privs; i++) {
59         printf("\"%s\"\n", ep.out.priv_names[i]);
60      }
61
62      printf("\n");
63   }
64
65   if(CAC_OP_FAILED(hnd->status)) {
66      fprintf(stderr, "Error while enumerating privileges.\n Error: %s\n", nt_errstr(hnd->status));
67      goto done;
68   }
69
70done:
71   if(!cac_LsaClosePolicy(hnd, mem_ctx, lsa_pol)) {
72      fprintf(stderr, "Could not close policy handle.\n Error: %s\n", nt_errstr(hnd->status));
73   }
74
75   cac_FreeHandle(hnd);
76   talloc_destroy(mem_ctx);
77
78   return 0;
79}
80