When executing scripts don't chroot if XBPS_TARGET_ARCH is set.

This commit is contained in:
Juan RP 2013-02-25 23:00:20 +01:00
parent 30d9f6ae4d
commit 26778964a4

View File

@ -42,6 +42,7 @@ static int
pfcexec(struct xbps_handle *xhp, const char *file, const char **argv)
{
pid_t child;
const char *tarch;
int status;
child = vfork();
@ -51,8 +52,9 @@ pfcexec(struct xbps_handle *xhp, const char *file, const char **argv)
* If rootdir != / and uid==0 and bin/sh exists,
* change root directory and exec command.
*/
tarch = getenv("XBPS_TARGET_ARCH");
if (strcmp(xhp->rootdir, "/")) {
if (geteuid() == 0 && access("bin/sh", X_OK) == 0) {
if (!tarch && geteuid() == 0 && access("bin/sh", X_OK) == 0) {
if (chroot(xhp->rootdir) == 0) {
if (chdir("/") == -1)
_exit(129);