1*2810ac1bSKiyoung Kim #include <assert.h>
2*2810ac1bSKiyoung Kim #include <stdlib.h>
3*2810ac1bSKiyoung Kim #include <sys/capability.h>
4*2810ac1bSKiyoung Kim
5*2810ac1bSKiyoung Kim /*
6*2810ac1bSKiyoung Kim * Original from http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=400591
7*2810ac1bSKiyoung Kim *
8*2810ac1bSKiyoung Kim * Modified to test more functions.. AGM - 2008/07/06.
9*2810ac1bSKiyoung Kim */
10*2810ac1bSKiyoung Kim
main(int argc,char * argv[])11*2810ac1bSKiyoung Kim int main (int argc, char *argv[])
12*2810ac1bSKiyoung Kim {
13*2810ac1bSKiyoung Kim cap_t caps, caps2;
14*2810ac1bSKiyoung Kim ssize_t size, copy_size;
15*2810ac1bSKiyoung Kim void *buffer;
16*2810ac1bSKiyoung Kim char *text1, *text2;
17*2810ac1bSKiyoung Kim
18*2810ac1bSKiyoung Kim assert((caps = cap_get_pid(1)));
19*2810ac1bSKiyoung Kim
20*2810ac1bSKiyoung Kim text1 = cap_to_text(caps, NULL);
21*2810ac1bSKiyoung Kim assert(text1);
22*2810ac1bSKiyoung Kim
23*2810ac1bSKiyoung Kim size = cap_size (caps);
24*2810ac1bSKiyoung Kim assert (size>0 && size<1024);
25*2810ac1bSKiyoung Kim
26*2810ac1bSKiyoung Kim buffer = malloc (size);
27*2810ac1bSKiyoung Kim assert (buffer);
28*2810ac1bSKiyoung Kim
29*2810ac1bSKiyoung Kim copy_size = cap_copy_ext (buffer, caps, size);
30*2810ac1bSKiyoung Kim assert (copy_size == size);
31*2810ac1bSKiyoung Kim
32*2810ac1bSKiyoung Kim caps2 = cap_copy_int(buffer);
33*2810ac1bSKiyoung Kim assert (caps2);
34*2810ac1bSKiyoung Kim
35*2810ac1bSKiyoung Kim text2 = cap_to_text(caps2, NULL);
36*2810ac1bSKiyoung Kim assert(text2);
37*2810ac1bSKiyoung Kim
38*2810ac1bSKiyoung Kim assert(strcmp(text1, text2) == 0);
39*2810ac1bSKiyoung Kim
40*2810ac1bSKiyoung Kim assert(cap_compare(caps, caps2) == 0);
41*2810ac1bSKiyoung Kim
42*2810ac1bSKiyoung Kim return 0;
43*2810ac1bSKiyoung Kim }
44