Execute pkg scripts via posix_spawn(3).

This commit is contained in:
Juan RP 2016-02-04 11:39:02 +01:00
parent bd00a0b096
commit e33f6354c3
2 changed files with 8 additions and 1 deletions

3
NEWS
View File

@ -1,5 +1,8 @@
xbps-0.52 (???): xbps-0.52 (???):
* libxbps: package INSTALL/REMOVE scripts are now executed via
posix_spawn(3), replacing vfork(3).
* libxbps: package INSTALL/REMOVE scripts do not need to be executables * libxbps: package INSTALL/REMOVE scripts do not need to be executables
anymore because they are executed with "/bin/sh" directly. That means anymore because they are executed with "/bin/sh" directly. That means
"/tmp" can be mounted as "noexec". Fixed #149 correctly. "/tmp" can be mounted as "noexec". Fixed #149 correctly.

View File

@ -37,6 +37,7 @@
#include <stdarg.h> #include <stdarg.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <spawn.h>
#undef _DEFAULT_SOURCE #undef _DEFAULT_SOURCE
#undef _BSD_SOURCE #undef _BSD_SOURCE
@ -48,7 +49,10 @@ pfcexec(struct xbps_handle *xhp, const char *file, const char **argv)
pid_t child; pid_t child;
int status; int status;
child = vfork(); if (posix_spawn(&child, file, NULL, NULL,
(char* const*)__UNCONST(argv), NULL) != 0)
return -1;
switch (child) { switch (child) {
case 0: case 0:
/* /*