summaryrefslogtreecommitdiffstats
path: root/runtime
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2013-11-11 14:56:08 -0800
committerAndroid Git Automerger <android-git-automerger@android.com>2013-11-11 14:56:08 -0800
commit5b70680b8df6d8fa95bb8e1070d0107f3d388940 (patch)
treeb5875ad37984abe68aeef58d302e39155585bdcc /runtime
parent2f846b39bc50bca8c4a5762bd9a53dfe3db5d023 (diff)
parente1467659568500cefd84abc4cdb399d8db7e214d (diff)
downloadart-5b70680b8df6d8fa95bb8e1070d0107f3d388940.zip
art-5b70680b8df6d8fa95bb8e1070d0107f3d388940.tar.gz
art-5b70680b8df6d8fa95bb8e1070d0107f3d388940.tar.bz2
am e1467659: Fix capability setting for the top 32 bits.
* commit 'e1467659568500cefd84abc4cdb399d8db7e214d': Fix capability setting for the top 32 bits.
Diffstat (limited to 'runtime')
-rw-r--r--runtime/native/dalvik_system_Zygote.cc16
1 files changed, 8 insertions, 8 deletions
diff --git a/runtime/native/dalvik_system_Zygote.cc b/runtime/native/dalvik_system_Zygote.cc
index d065ee4..dac2c89 100644
--- a/runtime/native/dalvik_system_Zygote.cc
+++ b/runtime/native/dalvik_system_Zygote.cc
@@ -230,18 +230,18 @@ static void DropCapabilitiesBoundingSet() {
static void SetCapabilities(int64_t permitted, int64_t effective) {
__user_cap_header_struct capheader;
- __user_cap_data_struct capdata;
-
memset(&capheader, 0, sizeof(capheader));
- memset(&capdata, 0, sizeof(capdata));
-
- capheader.version = _LINUX_CAPABILITY_VERSION;
+ capheader.version = _LINUX_CAPABILITY_VERSION_3;
capheader.pid = 0;
- capdata.effective = effective;
- capdata.permitted = permitted;
+ __user_cap_data_struct capdata[2];
+ memset(&capdata, 0, sizeof(capdata));
+ capdata[0].effective = effective;
+ capdata[1].effective = effective >> 32;
+ capdata[0].permitted = permitted;
+ capdata[1].permitted = permitted >> 32;
- if (capset(&capheader, &capdata) != 0) {
+ if (capset(&capheader, &capdata[0]) == -1) {
PLOG(FATAL) << "capset(" << permitted << ", " << effective << ") failed";
}
}