X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Frpm-fake.c;h=6d52e98b6dc23428994ad5051892f4d9bf121f2a;hb=148ab3024621f97b9cf95091657db2448098bc66;hp=26c5fa8cbd04cb9babe03281b71b47d27597ce8e;hpb=c46a812d668f4327392254c3fbbfef5ed00c330e;p=util-vserver.git diff --git a/src/rpm-fake.c b/src/rpm-fake.c index 26c5fa8..6d52e98 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_3; header.pid = 0; - if (capget(&header, &user)==-1) { +retry: + if (capget(&header, user)==-1) { + if (!retried && + header.version != _LINUX_CAPABILITY_VERSION_3) { + header.version = _LINUX_CAPABILITY_VERSION_1; + retried = 1; + goto retry; + } perror("capget()"); exit(wrapper_exit_code); } - user.effective &= ~(1<