Loading cmds/installd/dexopt.cpp +2 −3 Original line number Diff line number Diff line Loading @@ -1877,9 +1877,8 @@ int dexopt(const char* dex_path, uid_t uid, const char* pkgname, const char* ins const char* dex_metadata_path, const char* compilation_reason) { CHECK(pkgname != nullptr); CHECK(pkgname[0] != 0); if ((dexopt_flags & ~DEXOPT_MASK) != 0) { LOG_FATAL("dexopt flags contains unknown fields\n"); } CHECK_EQ(dexopt_flags & ~DEXOPT_MASK, 0) << "dexopt flags contains unknown fields: " << dexopt_flags; if (!validate_dex_path_size(dex_path)) { return -1; Loading cmds/installd/installd_constants.h +1 −0 Original line number Diff line number Diff line Loading @@ -64,6 +64,7 @@ constexpr int DEXOPT_MASK = | DEXOPT_FORCE | DEXOPT_STORAGE_CE | DEXOPT_STORAGE_DE | DEXOPT_IDLE_BACKGROUND_JOB | DEXOPT_ENABLE_HIDDEN_API_CHECKS; // NOTE: keep in sync with StorageManager Loading cmds/installd/otapreopt.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -82,7 +82,8 @@ static_assert(DEXOPT_STORAGE_DE == 1 << 8, "DEXOPT_STORAGE_DE unexpected."); static_assert(DEXOPT_ENABLE_HIDDEN_API_CHECKS == 1 << 10, "DEXOPT_ENABLE_HIDDEN_API_CHECKS unexpected"); static_assert(DEXOPT_MASK == 0x5fe, "DEXOPT_MASK unexpected."); static_assert(DEXOPT_MASK == (0x5fe | DEXOPT_IDLE_BACKGROUND_JOB), "DEXOPT_MASK unexpected."); Loading libs/binder/AppOpsManager.cpp +4 −3 Original line number Diff line number Diff line Loading @@ -100,11 +100,12 @@ int32_t AppOpsManager::noteOp(int32_t op, int32_t uid, const String16& callingPa : APP_OPS_MANAGER_UNAVAILABLE_MODE; } int32_t AppOpsManager::startOp(int32_t op, int32_t uid, const String16& callingPackage) { int32_t AppOpsManager::startOpNoThrow(int32_t op, int32_t uid, const String16& callingPackage, bool startIfModeDefault) { sp<IAppOpsService> service = getService(); return service != NULL ? service->startOperation(getToken(service), op, uid, callingPackage) : APP_OPS_MANAGER_UNAVAILABLE_MODE; ? service->startOperation(getToken(service), op, uid, callingPackage, startIfModeDefault) : APP_OPS_MANAGER_UNAVAILABLE_MODE; } void AppOpsManager::finishOp(int32_t op, int32_t uid, const String16& callingPackage) { Loading libs/binder/IAppOpsService.cpp +4 −2 Original line number Diff line number Diff line Loading @@ -61,13 +61,14 @@ public: } virtual int32_t startOperation(const sp<IBinder>& token, int32_t code, int32_t uid, const String16& packageName) { const String16& packageName, bool startIfModeDefault) { Parcel data, reply; data.writeInterfaceToken(IAppOpsService::getInterfaceDescriptor()); data.writeStrongBinder(token); data.writeInt32(code); data.writeInt32(uid); data.writeString16(packageName); data.writeInt32(startIfModeDefault ? 1 : 0); remote()->transact(START_OPERATION_TRANSACTION, data, &reply); // fail on exception if (reply.readExceptionCode() != 0) return MODE_ERRORED; Loading Loading @@ -159,7 +160,8 @@ status_t BnAppOpsService::onTransact( int32_t code = data.readInt32(); int32_t uid = data.readInt32(); String16 packageName = data.readString16(); int32_t res = startOperation(token, code, uid, packageName); bool startIfModeDefault = data.readInt32() == 1; int32_t res = startOperation(token, code, uid, packageName, startIfModeDefault); reply->writeNoException(); reply->writeInt32(res); return NO_ERROR; Loading Loading
cmds/installd/dexopt.cpp +2 −3 Original line number Diff line number Diff line Loading @@ -1877,9 +1877,8 @@ int dexopt(const char* dex_path, uid_t uid, const char* pkgname, const char* ins const char* dex_metadata_path, const char* compilation_reason) { CHECK(pkgname != nullptr); CHECK(pkgname[0] != 0); if ((dexopt_flags & ~DEXOPT_MASK) != 0) { LOG_FATAL("dexopt flags contains unknown fields\n"); } CHECK_EQ(dexopt_flags & ~DEXOPT_MASK, 0) << "dexopt flags contains unknown fields: " << dexopt_flags; if (!validate_dex_path_size(dex_path)) { return -1; Loading
cmds/installd/installd_constants.h +1 −0 Original line number Diff line number Diff line Loading @@ -64,6 +64,7 @@ constexpr int DEXOPT_MASK = | DEXOPT_FORCE | DEXOPT_STORAGE_CE | DEXOPT_STORAGE_DE | DEXOPT_IDLE_BACKGROUND_JOB | DEXOPT_ENABLE_HIDDEN_API_CHECKS; // NOTE: keep in sync with StorageManager Loading
cmds/installd/otapreopt.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -82,7 +82,8 @@ static_assert(DEXOPT_STORAGE_DE == 1 << 8, "DEXOPT_STORAGE_DE unexpected."); static_assert(DEXOPT_ENABLE_HIDDEN_API_CHECKS == 1 << 10, "DEXOPT_ENABLE_HIDDEN_API_CHECKS unexpected"); static_assert(DEXOPT_MASK == 0x5fe, "DEXOPT_MASK unexpected."); static_assert(DEXOPT_MASK == (0x5fe | DEXOPT_IDLE_BACKGROUND_JOB), "DEXOPT_MASK unexpected."); Loading
libs/binder/AppOpsManager.cpp +4 −3 Original line number Diff line number Diff line Loading @@ -100,11 +100,12 @@ int32_t AppOpsManager::noteOp(int32_t op, int32_t uid, const String16& callingPa : APP_OPS_MANAGER_UNAVAILABLE_MODE; } int32_t AppOpsManager::startOp(int32_t op, int32_t uid, const String16& callingPackage) { int32_t AppOpsManager::startOpNoThrow(int32_t op, int32_t uid, const String16& callingPackage, bool startIfModeDefault) { sp<IAppOpsService> service = getService(); return service != NULL ? service->startOperation(getToken(service), op, uid, callingPackage) : APP_OPS_MANAGER_UNAVAILABLE_MODE; ? service->startOperation(getToken(service), op, uid, callingPackage, startIfModeDefault) : APP_OPS_MANAGER_UNAVAILABLE_MODE; } void AppOpsManager::finishOp(int32_t op, int32_t uid, const String16& callingPackage) { Loading
libs/binder/IAppOpsService.cpp +4 −2 Original line number Diff line number Diff line Loading @@ -61,13 +61,14 @@ public: } virtual int32_t startOperation(const sp<IBinder>& token, int32_t code, int32_t uid, const String16& packageName) { const String16& packageName, bool startIfModeDefault) { Parcel data, reply; data.writeInterfaceToken(IAppOpsService::getInterfaceDescriptor()); data.writeStrongBinder(token); data.writeInt32(code); data.writeInt32(uid); data.writeString16(packageName); data.writeInt32(startIfModeDefault ? 1 : 0); remote()->transact(START_OPERATION_TRANSACTION, data, &reply); // fail on exception if (reply.readExceptionCode() != 0) return MODE_ERRORED; Loading Loading @@ -159,7 +160,8 @@ status_t BnAppOpsService::onTransact( int32_t code = data.readInt32(); int32_t uid = data.readInt32(); String16 packageName = data.readString16(); int32_t res = startOperation(token, code, uid, packageName); bool startIfModeDefault = data.readInt32() == 1; int32_t res = startOperation(token, code, uid, packageName, startIfModeDefault); reply->writeNoException(); reply->writeInt32(res); return NO_ERROR; Loading