diff --git a/src/options.c b/src/options.c index 84227ae..125cef3 100644 --- a/src/options.c +++ b/src/options.c @@ -172,14 +172,14 @@ static const struct option_usage usage[] = { }, /** --user */ {"user", 0, OPT_STR, {.str = "nobody"}, -#ifdef WIN32 +#if defined(WIN32) || defined(__ANDROID__) "(Not available on this platform.)\n" #endif "When started in privileged mode, drop down to user's rights as soon as possible\n" }, /** --group */ {"group", 0, OPT_STR, {.str = "nogroup"}, -#ifdef WIN32 +#if defined(WIN32) || defined(__ANDROID__) "(Not available on this platform.)\n" #endif "When started in privileged mode, drop down to group's rights as soon as possible\n" @@ -268,6 +268,7 @@ static void set_options_defaults(void) { #ifndef WIN32 opts.pid_path = strdup(*(char **)get_default_optval(OPT_STR, "daemon")); +#ifndef __ANDROID__ errno = 0; tmp = *(char **) get_default_optval(OPT_STR, "user"); if (NULL == (pwnam = getpwnam(tmp))) @@ -282,6 +283,7 @@ static void set_options_defaults(void) { tmp = *(char **) get_default_optval(OPT_STR, "group"); if (NULL != (grnam = getgrnam(tmp))) opts.gid = grnam->gr_gid; +#endif opts.root_dir = strdup(*(char **)get_default_optval(OPT_STR, "chroot")); #endif @@ -508,6 +510,7 @@ int parse_options(int argc, char **argv) { case 'S': opts.use_syslog = 1; break; +#ifndef __ANDROID__ case 'u': if (!optarg) break; @@ -530,6 +533,12 @@ int parse_options(int argc, char **argv) { } opts.gid = grnam->gr_gid; break; +#else + case 'u': + case 'g': + pt_log(kLog_error, "-%c: %s\n", c, "feature not supported"); + exit(1); +#endif case 'C': opts.chroot = 1; if (!optarg) diff --git a/src/ptunnel.c b/src/ptunnel.c index ac6ff4f..997d1d6 100644 --- a/src/ptunnel.c +++ b/src/ptunnel.c @@ -586,6 +586,7 @@ unsigned int __stdcall pt_proxy(void *args) (opts.unprivileged ? "unprivileged" : "privileged")); #ifndef WIN32 +#ifndef __ANDROID__ #ifdef HAVE_SELINUX if (opts.uid || opts.gid || opts.selinux_context) #else @@ -596,6 +597,7 @@ unsigned int __stdcall pt_proxy(void *args) pt_log(kLog_error, "setgid(%d): %s\n", opts.gid, strerror(errno)); if (opts.uid && -1 == setuid(opts.uid)) pt_log(kLog_error, "setuid(%d): %s\n", opts.uid, strerror(errno)); +#endif #ifdef HAVE_SELINUX if (opts.selinux) { if (NULL != opts.selinux_context && -1 == setcon(opts.selinux_context))