mirror of
https://github.com/ioacademy-jikim/debugging
synced 2025-06-09 08:56:15 +00:00
54 lines
973 B
C
54 lines
973 B
C
#if defined(linux)
|
|
|
|
|
|
#include <stdio.h> /* printf() */
|
|
#include <unistd.h> /* syscall() */
|
|
#include <sys/syscall.h> /* __NR_capget */
|
|
#include <sys/types.h> /* uid_t */
|
|
#include <linux/capability.h> /* _LINUX_CAPABILITY_VERSION */
|
|
|
|
|
|
int main()
|
|
{
|
|
struct __user_cap_header_struct h;
|
|
struct __user_cap_data_struct d;
|
|
int syscall_result;
|
|
|
|
if (getuid() == 0)
|
|
fprintf(stderr, "Running as root\n");
|
|
h.version = _LINUX_CAPABILITY_VERSION;
|
|
h.pid = 0;
|
|
syscall_result = syscall(__NR_capget, &h, &d);
|
|
if (syscall_result >= 0)
|
|
{
|
|
fprintf(stderr,
|
|
"capget result:\n"
|
|
"effective %#x\n"
|
|
"permitted %#x\n"
|
|
"inheritable %#x\n",
|
|
d.effective,
|
|
d.permitted,
|
|
d.inheritable);
|
|
}
|
|
else
|
|
{
|
|
perror("capget");
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
#else
|
|
|
|
|
|
#include <stdio.h>
|
|
|
|
int main()
|
|
{
|
|
fprintf(stderr, "This program is Linux-specific\n");
|
|
return 0;
|
|
}
|
|
|
|
|
|
#endif
|