installd: Call pipe() before forking
Change-Id: Ideef9387c503a25dadb2afb4e4b394a2e61cd8e9
This commit is contained in:
parent
66a1d0d715
commit
716c2cf34a
@ -1744,8 +1744,7 @@ static void run_aapt(const char *source_apk, const char *internal_path,
|
|||||||
int aapt(const char *source_apk, const char *internal_path, const char *out_restable, uid_t uid,
|
int aapt(const char *source_apk, const char *internal_path, const char *out_restable, uid_t uid,
|
||||||
int pkgId, int min_sdk_version, const char *common_res_path)
|
int pkgId, int min_sdk_version, const char *common_res_path)
|
||||||
{
|
{
|
||||||
ALOGD("aapt source_apk=%s internal_path=%s out_restable=%s uid=%d, pkgId=%d, \
|
ALOGD("aapt source_apk=%s internal_path=%s out_restable=%s uid=%d, pkgId=%d,min_sdk_version=%d, common_res_path=%s",
|
||||||
min_sdk_version=%d, common_res_path=%s",
|
|
||||||
source_apk, internal_path, out_restable, uid, pkgId, min_sdk_version, common_res_path);
|
source_apk, internal_path, out_restable, uid, pkgId, min_sdk_version, common_res_path);
|
||||||
static const int PARENT_READ_PIPE = 0;
|
static const int PARENT_READ_PIPE = 0;
|
||||||
static const int CHILD_WRITE_PIPE = 1;
|
static const int CHILD_WRITE_PIPE = 1;
|
||||||
@ -1754,7 +1753,12 @@ int aapt(const char *source_apk, const char *internal_path, const char *out_rest
|
|||||||
char restable_path[PATH_MAX];
|
char restable_path[PATH_MAX];
|
||||||
char resapk_path[PATH_MAX];
|
char resapk_path[PATH_MAX];
|
||||||
|
|
||||||
|
// create pipes for redirecting STDERR to a buffer that can be displayed in logcat
|
||||||
int pipefd[2];
|
int pipefd[2];
|
||||||
|
if (pipe(pipefd) != 0) {
|
||||||
|
pipefd[0] = pipefd[1] = -1;
|
||||||
|
}
|
||||||
|
|
||||||
pid_t pid = fork();
|
pid_t pid = fork();
|
||||||
|
|
||||||
// get file descriptor for resources.arsc
|
// get file descriptor for resources.arsc
|
||||||
@ -1778,9 +1782,6 @@ int aapt(const char *source_apk, const char *internal_path, const char *out_rest
|
|||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pipe(pipefd) != 0) {
|
|
||||||
pipefd[0] = pipefd[1] = -1;
|
|
||||||
}
|
|
||||||
if (pid == 0) {
|
if (pid == 0) {
|
||||||
/* child -- drop privileges before continuing */
|
/* child -- drop privileges before continuing */
|
||||||
if (setgid(uid) != 0) {
|
if (setgid(uid) != 0) {
|
||||||
|
Loading…
Reference in New Issue
Block a user