Merge "Fix the run-as environment to better match su." am: 83f33e6c93

am: 1492d22a3d

* commit '1492d22a3d84bc95dc06e99417790b0453c281d4':
  Fix the run-as environment to better match su.
This commit is contained in:
Elliott Hughes 2015-11-03 23:34:32 +00:00 committed by android-build-merger
commit 329caf97ed

View file

@ -20,6 +20,8 @@
#include <dirent.h>
#include <errno.h>
#include <paths.h>
#include <pwd.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
@ -193,10 +195,21 @@ int main(int argc, char **argv)
panic("Could not set SELinux security context: %s\n", strerror(errno));
}
/* cd into the data directory */
// cd into the data directory, and set $HOME correspondingly.
if (TEMP_FAILURE_RETRY(chdir(info.dataDir)) < 0) {
panic("Could not cd to package's data directory: %s\n", strerror(errno));
}
setenv("HOME", info.dataDir, 1);
// Reset parts of the environment, like su would.
setenv("PATH", _PATH_DEFPATH, 1);
unsetenv("IFS");
// Set the user-specific parts for this user.
struct passwd* pw = getpwuid(uid);
setenv("LOGNAME", pw->pw_name, 1);
setenv("SHELL", pw->pw_shell, 1);
setenv("USER", pw->pw_name, 1);
/* User specified command for exec. */
if ((argc >= commandArgvOfs + 1) &&