From 8463f7b04ea526fac094ed007284cc682aadaa56 Mon Sep 17 00:00:00 2001 From: Daniel Hokka Zakrisson Date: Sat, 3 May 2008 17:00:14 +0000 Subject: [PATCH] Avoid that annoying "uses 32-bit capabilities (legacy support in use)" warning. git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@2717 94cd875c-1c1d-0410-91d2-eb244daf1a30 --- src/capability-compat.h | 8 ++++++++ src/rpm-fake.c | 22 +++++++++++++++------- src/vserver-info.c | 25 +++++++++++++++++-------- 3 files changed, 40 insertions(+), 15 deletions(-) diff --git a/src/capability-compat.h b/src/capability-compat.h index 8493080..8a684c6 100644 --- a/src/capability-compat.h +++ b/src/capability-compat.h @@ -29,3 +29,11 @@ extern int capget (struct __user_cap_header_struct *, struct __user_cap_data_str extern int capset (struct __user_cap_header_struct *, struct __user_cap_data_struct *); #endif + +#ifndef _LINUX_CAPABILITY_VERSION_1 +# define _LINUX_CAPABILITY_VERSION_1 _LINUX_CAPABILITY_VERSION +#endif + +#ifndef _LINUX_CAPABILITY_VERSION_2 +# define _LINUX_CAPABILITY_VERSION_2 0x20071026 +#endif diff --git a/src/rpm-fake.c b/src/rpm-fake.c index 26c5fa8..0e3a936 100644 --- a/src/rpm-fake.c +++ b/src/rpm-fake.c @@ -419,22 +419,30 @@ initPwSocket() static void reduceCapabilities() { + int retried = 0; struct __user_cap_header_struct header; - struct __user_cap_data_struct user; + struct __user_cap_data_struct user[2]; - header.version = _LINUX_CAPABILITY_VERSION; + header.version = _LINUX_CAPABILITY_VERSION_2; header.pid = 0; - if (capget(&header, &user)==-1) { +retry: + if (capget(&header, user)==-1) { + if (!retried && + header.version != _LINUX_CAPABILITY_VERSION_2) { + header.version = _LINUX_CAPABILITY_VERSION_1; + retried = 1; + goto retry; + } perror("capget()"); exit(wrapper_exit_code); } - user.effective &= ~(1<