Use AID_SYSTEM as uid when creating oat dir

Previously AID_INSTALL was used, which was causing permission denied errors
when PackageManager was trying to recursively rename staging directory

Bug: 19550105
Bug: 20087446
Change-Id: I3a9e3056c1fbc1ce0077a3ce52cf77ea6b5085ee
This commit is contained in:
Fyodor Kupolov 2015-04-06 19:09:02 -07:00
parent a60ff367a4
commit 8eed7e6a9b

View File

@ -1711,12 +1711,7 @@ int create_oat_dir(const char* oat_dir, const char* instruction_set)
ALOGE("invalid apk path '%s' (bad prefix)\n", oat_dir); ALOGE("invalid apk path '%s' (bad prefix)\n", oat_dir);
return -1; return -1;
} }
if ((mkdir(oat_dir, S_IRWXU|S_IRWXG|S_IXOTH) < 0) && (errno != EEXIST)) { if (fs_prepare_dir(oat_dir, S_IRWXU | S_IRWXG | S_IXOTH, AID_SYSTEM, AID_INSTALL)) {
ALOGE("cannot create dir '%s': %s\n", oat_dir, strerror(errno));
return -1;
}
if (chmod(oat_dir, S_IRWXU|S_IRWXG|S_IXOTH) < 0) {
ALOGE("cannot chmod dir '%s': %s\n", oat_dir, strerror(errno));
return -1; return -1;
} }
if (selinux_android_restorecon(oat_dir, 0)) { if (selinux_android_restorecon(oat_dir, 0)) {
@ -1724,12 +1719,7 @@ int create_oat_dir(const char* oat_dir, const char* instruction_set)
return -1; return -1;
} }
snprintf(oat_instr_dir, PKG_PATH_MAX, "%s/%s", oat_dir, instruction_set); snprintf(oat_instr_dir, PKG_PATH_MAX, "%s/%s", oat_dir, instruction_set);
if ((mkdir(oat_instr_dir, S_IRWXU|S_IRWXG|S_IXOTH) < 0) && (errno != EEXIST)) { if (fs_prepare_dir(oat_instr_dir, S_IRWXU | S_IRWXG | S_IXOTH, AID_SYSTEM, AID_INSTALL)) {
ALOGE("cannot create dir '%s': %s\n", oat_instr_dir, strerror(errno));
return -1;
}
if (chmod(oat_instr_dir, S_IRWXU|S_IRWXG|S_IXOTH) < 0) {
ALOGE("cannot chmod dir '%s': %s\n", oat_dir, strerror(errno));
return -1; return -1;
} }
return 0; return 0;