diff options
Diffstat (limited to 'cmds/dumpstate/dumpstate.c')
| -rw-r--r-- | cmds/dumpstate/dumpstate.c | 14 | 
1 files changed, 12 insertions, 2 deletions
| diff --git a/cmds/dumpstate/dumpstate.c b/cmds/dumpstate/dumpstate.c index 082e704d6f77..6e9caaf6867c 100644 --- a/cmds/dumpstate/dumpstate.c +++ b/cmds/dumpstate/dumpstate.c @@ -218,8 +218,18 @@ int main(int argc, char *argv[]) {      /* switch to non-root user and group */      gid_t groups[] = { AID_LOG, AID_SDCARD_RW, AID_MOUNT }; -    setgroups(sizeof(groups)/sizeof(groups[0]), groups); -    setuid(AID_SHELL); +    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];      pid_t gzip_pid = -1; | 
