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:
commit
329caf97ed
1 changed files with 14 additions and 1 deletions
|
@ -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) &&
|
||||
|
|
Loading…
Reference in a new issue