From 77d87aa7ff352a4867d8a6e2a73fadeb3152c7eb Mon Sep 17 00:00:00 2001 From: Nick Kralevich Date: Thu, 21 Oct 2010 09:14:14 -0700 Subject: [PATCH] allow dumpstate to work for non-root users. Change-Id: Iaad4a097f5e09914842955dafbc0a09cc7a1db48 --- cmds/dumpstate/dumpstate.c | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/cmds/dumpstate/dumpstate.c b/cmds/dumpstate/dumpstate.c index 822f62d99d87..0723f6749b53 100644 --- a/cmds/dumpstate/dumpstate.c +++ b/cmds/dumpstate/dumpstate.c @@ -216,19 +216,21 @@ int main(int argc, char *argv[]) { fclose(cmdline); } - /* switch to non-root user and group */ - gid_t groups[] = { AID_LOG, AID_SDCARD_RW, AID_MOUNT }; - if (setgroups(sizeof(groups)/sizeof(groups[0]), groups) != 0) { - LOGE("Unable to setgroups, aborting: %s\n", strerror(errno)); - return -1; - } - if (setgid(AID_SHELL) != 0) { - LOGE("Unable to setgid, aborting: %s\n", strerror(errno)); - return -1; - } - if (setuid(AID_SHELL) != 0) { - LOGE("Unable to setuid, aborting: %s\n", strerror(errno)); - return -1; + if (getuid() == 0) { + /* switch to non-root user and group */ + gid_t groups[] = { AID_LOG, AID_SDCARD_RW, AID_MOUNT }; + if (setgroups(sizeof(groups)/sizeof(groups[0]), groups) != 0) { + LOGE("Unable to setgroups, aborting: %s\n", strerror(errno)); + return -1; + } + if (setgid(AID_SHELL) != 0) { + LOGE("Unable to setgid, aborting: %s\n", strerror(errno)); + return -1; + } + if (setuid(AID_SHELL) != 0) { + LOGE("Unable to setuid, aborting: %s\n", strerror(errno)); + return -1; + } } char path[PATH_MAX], tmp_path[PATH_MAX]; -- 2.11.0