valgrind/valgrind-3.8.1-capget.patch
2012-09-20 16:51:21 +02:00

40 lines
1.1 KiB
Diff

#include <sys/capability.h>
#include <stddef.h>
#include <stdio.h>
int
main (int c, char **argv)
{
struct __user_cap_header_struct hdr;
hdr.version = _LINUX_CAPABILITY_VERSION;
hdr.pid = 0;
(void) capget(&hdr, NULL);
switch (hdr.version) {
case _LINUX_CAPABILITY_VERSION_1:
printf("Version 1\n");
break;
case _LINUX_CAPABILITY_VERSION_2:
printf("Version 2\n");
break;
default:
printf("Unknown version\n");
break;
}
return 0;
}
--- valgrind-3.7.0/coregrind/m_syswrap/syswrap-linux.c.jj 2010-04-07 08:14:12.000000000 -0400
+++ valgrind-3.7.0/coregrind/m_syswrap/syswrap-linux.c 2010-04-12 07:24:12.838876000 -0400
@@ -2212,8 +2212,9 @@ PRE(sys_capget)
vki_cap_user_header_t, header, vki_cap_user_data_t, data);
PRE_MEM_READ( "capget(header)", ARG1,
sizeof(struct __vki_user_cap_header_struct) );
- PRE_MEM_WRITE( "capget(data)", ARG2,
- sizeof(struct __vki_user_cap_data_struct) );
+ if (ARG2 != (Addr)NULL)
+ PRE_MEM_WRITE( "capget(data)", ARG2,
+ sizeof(struct __vki_user_cap_data_struct) );
}
POST(sys_capget)
{