From: Tobias Brunner Date: Tue, 18 Oct 2011 09:36:52 +0000 (+0200) Subject: pluto: Switch to user 'vpn' on Android. X-Git-Tag: 4.6.0~109 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=bdbbab35b13928c74a55895f54f7b6457e6e762d;p=thirdparty%2Fstrongswan.git pluto: Switch to user 'vpn' on Android. --- diff --git a/src/charon/charon.c b/src/charon/charon.c index 9c6f47830b..141403b895 100644 --- a/src/charon/charon.c +++ b/src/charon/charon.c @@ -41,7 +41,7 @@ #include #ifdef ANDROID -#include +#include /* for AID_VPN */ #endif #ifndef LOG_AUTHPRIV /* not defined on OpenSolaris */ diff --git a/src/pluto/plutomain.c b/src/pluto/plutomain.c index 20c9a07a59..6366b2982d 100644 --- a/src/pluto/plutomain.c +++ b/src/pluto/plutomain.c @@ -81,6 +81,10 @@ #include "whack_attribute.h" #include "pluto.h" +#ifdef ANDROID +#include /* for AID_VPN */ +#endif + /** * Number of threads in the thread pool, if not specified in config. */ @@ -716,10 +720,10 @@ int main(int argc, char **argv) #ifdef IPSEC_GROUP { struct group group, *grp; - char buf[1024]; + char buf[1024]; if (getgrnam_r(IPSEC_GROUP, &group, buf, sizeof(buf), &grp) != 0 || - grp == NULL || setgid(grp->gr_gid) != 0) + grp == NULL || setgid(grp->gr_gid) != 0) { plog("unable to change daemon group"); abort(); @@ -729,15 +733,22 @@ int main(int argc, char **argv) #ifdef IPSEC_USER { struct passwd passwd, *pwp; - char buf[1024]; + char buf[1024]; if (getpwnam_r(IPSEC_USER, &passwd, buf, sizeof(buf), &pwp) != 0 || - pwp == NULL || setuid(pwp->pw_uid) != 0) + pwp == NULL || setuid(pwp->pw_uid) != 0) { plog("unable to change daemon user"); abort(); } - } + } +#endif +#ifdef ANDROID + if (setuid(AID_VPN) != 0) + { + plog("unable to change daemon user"); + abort(); + } #endif #ifdef CAPABILITIES_LIBCAP