Blame contrib/bug400591/bug.c
|
Packit |
3a1417 |
#include <assert.h>
|
|
Packit |
3a1417 |
#include <stdlib.h>
|
|
Packit |
3a1417 |
#include <sys/capability.h>
|
|
Packit |
3a1417 |
|
|
Packit |
3a1417 |
/*
|
|
Packit |
3a1417 |
* Original from http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=400591
|
|
Packit |
3a1417 |
*
|
|
Packit |
3a1417 |
* Modified to test more functions.. AGM - 2008/07/06.
|
|
Packit |
3a1417 |
*/
|
|
Packit |
3a1417 |
|
|
Packit |
3a1417 |
int main (int argc, char *argv[])
|
|
Packit |
3a1417 |
{
|
|
Packit |
3a1417 |
cap_t caps, caps2;
|
|
Packit |
3a1417 |
ssize_t size, copy_size;
|
|
Packit |
3a1417 |
void *buffer;
|
|
Packit |
3a1417 |
char *text1, *text2;
|
|
Packit |
3a1417 |
|
|
Packit |
3a1417 |
assert((caps = cap_get_pid(1)));
|
|
Packit |
3a1417 |
|
|
Packit |
3a1417 |
text1 = cap_to_text(caps, NULL);
|
|
Packit |
3a1417 |
assert(text1);
|
|
Packit |
3a1417 |
|
|
Packit |
3a1417 |
size = cap_size (caps);
|
|
Packit |
3a1417 |
assert (size>0 && size<1024);
|
|
Packit |
3a1417 |
|
|
Packit |
3a1417 |
buffer = malloc (size);
|
|
Packit |
3a1417 |
assert (buffer);
|
|
Packit |
3a1417 |
|
|
Packit |
3a1417 |
copy_size = cap_copy_ext (buffer, caps, size);
|
|
Packit |
3a1417 |
assert (copy_size == size);
|
|
Packit |
3a1417 |
|
|
Packit |
3a1417 |
caps2 = cap_copy_int(buffer);
|
|
Packit |
3a1417 |
assert (caps2);
|
|
Packit |
3a1417 |
|
|
Packit |
3a1417 |
text2 = cap_to_text(caps2, NULL);
|
|
Packit |
3a1417 |
assert(text2);
|
|
Packit |
3a1417 |
|
|
Packit |
3a1417 |
assert(strcmp(text1, text2) == 0);
|
|
Packit |
3a1417 |
|
|
Packit |
3a1417 |
assert(cap_compare(caps, caps2) == 0);
|
|
Packit |
3a1417 |
|
|
Packit |
3a1417 |
return 0;
|
|
Packit |
3a1417 |
}
|