Loading services/sensorservice/SensorEventConnection.cpp +3 −3 Original line number Original line Diff line number Diff line Loading @@ -82,7 +82,7 @@ void SensorService::SensorEventConnection::resetWakeLockRefCount() { void SensorService::SensorEventConnection::dump(String8& result) { void SensorService::SensorEventConnection::dump(String8& result) { Mutex::Autolock _l(mConnectionLock); Mutex::Autolock _l(mConnectionLock); result.appendFormat("\tOperating Mode: "); result.appendFormat("\tOperating Mode: "); if (!mService->isWhiteListedPackage(getPackageName())) { if (!mService->isAllowListedPackage(getPackageName())) { result.append("RESTRICTED\n"); result.append("RESTRICTED\n"); } else if (mDataInjectionMode) { } else if (mDataInjectionMode) { result.append("DATA_INJECTION\n"); result.append("DATA_INJECTION\n"); Loading Loading @@ -124,7 +124,7 @@ void SensorService::SensorEventConnection::dump(util::ProtoOutputStream* proto) using namespace service::SensorEventConnectionProto; using namespace service::SensorEventConnectionProto; Mutex::Autolock _l(mConnectionLock); Mutex::Autolock _l(mConnectionLock); if (!mService->isWhiteListedPackage(getPackageName())) { if (!mService->isAllowListedPackage(getPackageName())) { proto->write(OPERATING_MODE, OP_MODE_RESTRICTED); proto->write(OPERATING_MODE, OP_MODE_RESTRICTED); } else if (mDataInjectionMode) { } else if (mDataInjectionMode) { proto->write(OPERATING_MODE, OP_MODE_DATA_INJECTION); proto->write(OPERATING_MODE, OP_MODE_DATA_INJECTION); Loading Loading @@ -850,7 +850,7 @@ int SensorService::SensorEventConnection::handleEvent(int fd, int events, void* // Unregister call backs. // Unregister call backs. return 0; return 0; } } if (!mService->isWhiteListedPackage(mPackageName)) { if (!mService->isAllowListedPackage(mPackageName)) { ALOGE("App not allowed to inject data, dropping event" ALOGE("App not allowed to inject data, dropping event" "package=%s uid=%d", mPackageName.string(), mUid); "package=%s uid=%d", mPackageName.string(), mUid); return 0; return 0; Loading services/sensorservice/SensorService.cpp +14 −14 Original line number Original line Diff line number Diff line Loading @@ -563,7 +563,7 @@ status_t SensorService::dump(int fd, const Vector<String16>& args) { mCurrentOperatingMode = RESTRICTED; mCurrentOperatingMode = RESTRICTED; // temporarily stop all sensor direct report and disable sensors // temporarily stop all sensor direct report and disable sensors disableAllSensorsLocked(&connLock); disableAllSensorsLocked(&connLock); mWhiteListedPackage.setTo(String8(args[1])); mAllowListedPackage.setTo(String8(args[1])); return status_t(NO_ERROR); return status_t(NO_ERROR); } else if (args.size() == 1 && args[0] == String16("enable")) { } else if (args.size() == 1 && args[0] == String16("enable")) { // If currently in restricted mode, reset back to NORMAL mode else ignore. // If currently in restricted mode, reset back to NORMAL mode else ignore. Loading @@ -579,7 +579,7 @@ status_t SensorService::dump(int fd, const Vector<String16>& args) { mCurrentOperatingMode == REPLAY_DATA_INJECTION) { mCurrentOperatingMode == REPLAY_DATA_INJECTION) { resetToNormalModeLocked(); resetToNormalModeLocked(); } } mWhiteListedPackage.clear(); mAllowListedPackage.clear(); return status_t(NO_ERROR); return status_t(NO_ERROR); } else if (args.size() == 2 && args[0] == String16("data_injection")) { } else if (args.size() == 2 && args[0] == String16("data_injection")) { if (mCurrentOperatingMode == NORMAL) { if (mCurrentOperatingMode == NORMAL) { Loading @@ -591,7 +591,7 @@ status_t SensorService::dump(int fd, const Vector<String16>& args) { // Re-enable sensors. // Re-enable sensors. dev.enableAllSensors(); dev.enableAllSensors(); } } mWhiteListedPackage.setTo(String8(args[1])); mAllowListedPackage.setTo(String8(args[1])); return NO_ERROR; return NO_ERROR; } else if (mCurrentOperatingMode == DATA_INJECTION) { } else if (mCurrentOperatingMode == DATA_INJECTION) { // Already in DATA_INJECTION mode. Treat this as a no_op. // Already in DATA_INJECTION mode. Treat this as a no_op. Loading @@ -612,7 +612,7 @@ status_t SensorService::dump(int fd, const Vector<String16>& args) { } } // Re-enable sensors. // Re-enable sensors. dev.enableAllSensors(); dev.enableAllSensors(); mWhiteListedPackage.setTo(String8(args[1])); mAllowListedPackage.setTo(String8(args[1])); return NO_ERROR; return NO_ERROR; } else if (mCurrentOperatingMode == REPLAY_DATA_INJECTION) { } else if (mCurrentOperatingMode == REPLAY_DATA_INJECTION) { // Already in REPLAY_DATA_INJECTION mode. Treat this as a no_op. // Already in REPLAY_DATA_INJECTION mode. Treat this as a no_op. Loading Loading @@ -680,14 +680,14 @@ status_t SensorService::dump(int fd, const Vector<String16>& args) { result.appendFormat(" NORMAL\n"); result.appendFormat(" NORMAL\n"); break; break; case RESTRICTED: case RESTRICTED: result.appendFormat(" RESTRICTED : %s\n", mWhiteListedPackage.string()); result.appendFormat(" RESTRICTED : %s\n", mAllowListedPackage.string()); break; break; case DATA_INJECTION: case DATA_INJECTION: result.appendFormat(" DATA_INJECTION : %s\n", mWhiteListedPackage.string()); result.appendFormat(" DATA_INJECTION : %s\n", mAllowListedPackage.string()); break; break; case REPLAY_DATA_INJECTION: case REPLAY_DATA_INJECTION: result.appendFormat(" REPLAY_DATA_INJECTION : %s\n", result.appendFormat(" REPLAY_DATA_INJECTION : %s\n", mWhiteListedPackage.string()); mAllowListedPackage.string()); break; break; default: default: result.appendFormat(" UNKNOWN\n"); result.appendFormat(" UNKNOWN\n"); Loading Loading @@ -809,11 +809,11 @@ status_t SensorService::dumpProtoLocked(int fd, ConnectionSafeAutolock* connLock break; break; case RESTRICTED: case RESTRICTED: proto.write(OPERATING_MODE, OP_MODE_RESTRICTED); proto.write(OPERATING_MODE, OP_MODE_RESTRICTED); proto.write(WHITELISTED_PACKAGE, std::string(mWhiteListedPackage.string())); proto.write(WHITELISTED_PACKAGE, std::string(mAllowListedPackage.string())); break; break; case DATA_INJECTION: case DATA_INJECTION: proto.write(OPERATING_MODE, OP_MODE_DATA_INJECTION); proto.write(OPERATING_MODE, OP_MODE_DATA_INJECTION); proto.write(WHITELISTED_PACKAGE, std::string(mWhiteListedPackage.string())); proto.write(WHITELISTED_PACKAGE, std::string(mAllowListedPackage.string())); break; break; default: default: proto.write(OPERATING_MODE, OP_MODE_UNKNOWN); proto.write(OPERATING_MODE, OP_MODE_UNKNOWN); Loading Loading @@ -1545,7 +1545,7 @@ sp<ISensorEventConnection> SensorService::createSensorEventConnection(const Stri // operating in DI mode. // operating in DI mode. if (requestedMode == DATA_INJECTION) { if (requestedMode == DATA_INJECTION) { if (mCurrentOperatingMode != DATA_INJECTION) return nullptr; if (mCurrentOperatingMode != DATA_INJECTION) return nullptr; if (!isWhiteListedPackage(packageName)) return nullptr; if (!isAllowListedPackage(packageName)) return nullptr; } } uid_t uid = IPCThreadState::self()->getCallingUid(); uid_t uid = IPCThreadState::self()->getCallingUid(); Loading Loading @@ -1918,7 +1918,7 @@ status_t SensorService::enable(const sp<SensorEventConnection>& connection, ConnectionSafeAutolock connLock = mConnectionHolder.lock(mLock); ConnectionSafeAutolock connLock = mConnectionHolder.lock(mLock); if (mCurrentOperatingMode != NORMAL && mCurrentOperatingMode != REPLAY_DATA_INJECTION && if (mCurrentOperatingMode != NORMAL && mCurrentOperatingMode != REPLAY_DATA_INJECTION && !isWhiteListedPackage(connection->getPackageName())) { !isAllowListedPackage(connection->getPackageName())) { return INVALID_OPERATION; return INVALID_OPERATION; } } Loading Loading @@ -2295,14 +2295,14 @@ void SensorService::sendEventsFromCache(const sp<SensorEventConnection>& connect } } } } bool SensorService::isWhiteListedPackage(const String8& packageName) { bool SensorService::isAllowListedPackage(const String8& packageName) { return (packageName.contains(mWhiteListedPackage.string())); return (packageName.contains(mAllowListedPackage.string())); } } bool SensorService::isOperationRestrictedLocked(const String16& opPackageName) { bool SensorService::isOperationRestrictedLocked(const String16& opPackageName) { if (mCurrentOperatingMode == RESTRICTED) { if (mCurrentOperatingMode == RESTRICTED) { String8 package(opPackageName); String8 package(opPackageName); return !isWhiteListedPackage(package); return !isAllowListedPackage(package); } } return false; return false; } } Loading services/sensorservice/SensorService.h +2 −2 Original line number Original line Diff line number Diff line Loading @@ -423,7 +423,7 @@ private: // If SensorService is operating in RESTRICTED mode, only select whitelisted packages are // If SensorService is operating in RESTRICTED mode, only select whitelisted packages are // allowed to register for or call flush on sensors. Typically only cts test packages are // allowed to register for or call flush on sensors. Typically only cts test packages are // allowed. // allowed. bool isWhiteListedPackage(const String8& packageName); bool isAllowListedPackage(const String8& packageName); // Returns true if a connection with the specified opPackageName has no access to sensors // Returns true if a connection with the specified opPackageName has no access to sensors // in the RESTRICTED mode (i.e. the service is in RESTRICTED mode, and the package is not // in the RESTRICTED mode (i.e. the service is in RESTRICTED mode, and the package is not Loading Loading @@ -522,7 +522,7 @@ private: // applications with this packageName are allowed to activate/deactivate or call flush on // applications with this packageName are allowed to activate/deactivate or call flush on // sensors. To run CTS this is can be set to ".cts." and only CTS tests will get access to // sensors. To run CTS this is can be set to ".cts." and only CTS tests will get access to // sensors. // sensors. String8 mWhiteListedPackage; String8 mAllowListedPackage; int mNextSensorRegIndex; int mNextSensorRegIndex; Vector<SensorRegistrationInfo> mLastNSensorRegistrations; Vector<SensorRegistrationInfo> mLastNSensorRegistrations; Loading Loading
services/sensorservice/SensorEventConnection.cpp +3 −3 Original line number Original line Diff line number Diff line Loading @@ -82,7 +82,7 @@ void SensorService::SensorEventConnection::resetWakeLockRefCount() { void SensorService::SensorEventConnection::dump(String8& result) { void SensorService::SensorEventConnection::dump(String8& result) { Mutex::Autolock _l(mConnectionLock); Mutex::Autolock _l(mConnectionLock); result.appendFormat("\tOperating Mode: "); result.appendFormat("\tOperating Mode: "); if (!mService->isWhiteListedPackage(getPackageName())) { if (!mService->isAllowListedPackage(getPackageName())) { result.append("RESTRICTED\n"); result.append("RESTRICTED\n"); } else if (mDataInjectionMode) { } else if (mDataInjectionMode) { result.append("DATA_INJECTION\n"); result.append("DATA_INJECTION\n"); Loading Loading @@ -124,7 +124,7 @@ void SensorService::SensorEventConnection::dump(util::ProtoOutputStream* proto) using namespace service::SensorEventConnectionProto; using namespace service::SensorEventConnectionProto; Mutex::Autolock _l(mConnectionLock); Mutex::Autolock _l(mConnectionLock); if (!mService->isWhiteListedPackage(getPackageName())) { if (!mService->isAllowListedPackage(getPackageName())) { proto->write(OPERATING_MODE, OP_MODE_RESTRICTED); proto->write(OPERATING_MODE, OP_MODE_RESTRICTED); } else if (mDataInjectionMode) { } else if (mDataInjectionMode) { proto->write(OPERATING_MODE, OP_MODE_DATA_INJECTION); proto->write(OPERATING_MODE, OP_MODE_DATA_INJECTION); Loading Loading @@ -850,7 +850,7 @@ int SensorService::SensorEventConnection::handleEvent(int fd, int events, void* // Unregister call backs. // Unregister call backs. return 0; return 0; } } if (!mService->isWhiteListedPackage(mPackageName)) { if (!mService->isAllowListedPackage(mPackageName)) { ALOGE("App not allowed to inject data, dropping event" ALOGE("App not allowed to inject data, dropping event" "package=%s uid=%d", mPackageName.string(), mUid); "package=%s uid=%d", mPackageName.string(), mUid); return 0; return 0; Loading
services/sensorservice/SensorService.cpp +14 −14 Original line number Original line Diff line number Diff line Loading @@ -563,7 +563,7 @@ status_t SensorService::dump(int fd, const Vector<String16>& args) { mCurrentOperatingMode = RESTRICTED; mCurrentOperatingMode = RESTRICTED; // temporarily stop all sensor direct report and disable sensors // temporarily stop all sensor direct report and disable sensors disableAllSensorsLocked(&connLock); disableAllSensorsLocked(&connLock); mWhiteListedPackage.setTo(String8(args[1])); mAllowListedPackage.setTo(String8(args[1])); return status_t(NO_ERROR); return status_t(NO_ERROR); } else if (args.size() == 1 && args[0] == String16("enable")) { } else if (args.size() == 1 && args[0] == String16("enable")) { // If currently in restricted mode, reset back to NORMAL mode else ignore. // If currently in restricted mode, reset back to NORMAL mode else ignore. Loading @@ -579,7 +579,7 @@ status_t SensorService::dump(int fd, const Vector<String16>& args) { mCurrentOperatingMode == REPLAY_DATA_INJECTION) { mCurrentOperatingMode == REPLAY_DATA_INJECTION) { resetToNormalModeLocked(); resetToNormalModeLocked(); } } mWhiteListedPackage.clear(); mAllowListedPackage.clear(); return status_t(NO_ERROR); return status_t(NO_ERROR); } else if (args.size() == 2 && args[0] == String16("data_injection")) { } else if (args.size() == 2 && args[0] == String16("data_injection")) { if (mCurrentOperatingMode == NORMAL) { if (mCurrentOperatingMode == NORMAL) { Loading @@ -591,7 +591,7 @@ status_t SensorService::dump(int fd, const Vector<String16>& args) { // Re-enable sensors. // Re-enable sensors. dev.enableAllSensors(); dev.enableAllSensors(); } } mWhiteListedPackage.setTo(String8(args[1])); mAllowListedPackage.setTo(String8(args[1])); return NO_ERROR; return NO_ERROR; } else if (mCurrentOperatingMode == DATA_INJECTION) { } else if (mCurrentOperatingMode == DATA_INJECTION) { // Already in DATA_INJECTION mode. Treat this as a no_op. // Already in DATA_INJECTION mode. Treat this as a no_op. Loading @@ -612,7 +612,7 @@ status_t SensorService::dump(int fd, const Vector<String16>& args) { } } // Re-enable sensors. // Re-enable sensors. dev.enableAllSensors(); dev.enableAllSensors(); mWhiteListedPackage.setTo(String8(args[1])); mAllowListedPackage.setTo(String8(args[1])); return NO_ERROR; return NO_ERROR; } else if (mCurrentOperatingMode == REPLAY_DATA_INJECTION) { } else if (mCurrentOperatingMode == REPLAY_DATA_INJECTION) { // Already in REPLAY_DATA_INJECTION mode. Treat this as a no_op. // Already in REPLAY_DATA_INJECTION mode. Treat this as a no_op. Loading Loading @@ -680,14 +680,14 @@ status_t SensorService::dump(int fd, const Vector<String16>& args) { result.appendFormat(" NORMAL\n"); result.appendFormat(" NORMAL\n"); break; break; case RESTRICTED: case RESTRICTED: result.appendFormat(" RESTRICTED : %s\n", mWhiteListedPackage.string()); result.appendFormat(" RESTRICTED : %s\n", mAllowListedPackage.string()); break; break; case DATA_INJECTION: case DATA_INJECTION: result.appendFormat(" DATA_INJECTION : %s\n", mWhiteListedPackage.string()); result.appendFormat(" DATA_INJECTION : %s\n", mAllowListedPackage.string()); break; break; case REPLAY_DATA_INJECTION: case REPLAY_DATA_INJECTION: result.appendFormat(" REPLAY_DATA_INJECTION : %s\n", result.appendFormat(" REPLAY_DATA_INJECTION : %s\n", mWhiteListedPackage.string()); mAllowListedPackage.string()); break; break; default: default: result.appendFormat(" UNKNOWN\n"); result.appendFormat(" UNKNOWN\n"); Loading Loading @@ -809,11 +809,11 @@ status_t SensorService::dumpProtoLocked(int fd, ConnectionSafeAutolock* connLock break; break; case RESTRICTED: case RESTRICTED: proto.write(OPERATING_MODE, OP_MODE_RESTRICTED); proto.write(OPERATING_MODE, OP_MODE_RESTRICTED); proto.write(WHITELISTED_PACKAGE, std::string(mWhiteListedPackage.string())); proto.write(WHITELISTED_PACKAGE, std::string(mAllowListedPackage.string())); break; break; case DATA_INJECTION: case DATA_INJECTION: proto.write(OPERATING_MODE, OP_MODE_DATA_INJECTION); proto.write(OPERATING_MODE, OP_MODE_DATA_INJECTION); proto.write(WHITELISTED_PACKAGE, std::string(mWhiteListedPackage.string())); proto.write(WHITELISTED_PACKAGE, std::string(mAllowListedPackage.string())); break; break; default: default: proto.write(OPERATING_MODE, OP_MODE_UNKNOWN); proto.write(OPERATING_MODE, OP_MODE_UNKNOWN); Loading Loading @@ -1545,7 +1545,7 @@ sp<ISensorEventConnection> SensorService::createSensorEventConnection(const Stri // operating in DI mode. // operating in DI mode. if (requestedMode == DATA_INJECTION) { if (requestedMode == DATA_INJECTION) { if (mCurrentOperatingMode != DATA_INJECTION) return nullptr; if (mCurrentOperatingMode != DATA_INJECTION) return nullptr; if (!isWhiteListedPackage(packageName)) return nullptr; if (!isAllowListedPackage(packageName)) return nullptr; } } uid_t uid = IPCThreadState::self()->getCallingUid(); uid_t uid = IPCThreadState::self()->getCallingUid(); Loading Loading @@ -1918,7 +1918,7 @@ status_t SensorService::enable(const sp<SensorEventConnection>& connection, ConnectionSafeAutolock connLock = mConnectionHolder.lock(mLock); ConnectionSafeAutolock connLock = mConnectionHolder.lock(mLock); if (mCurrentOperatingMode != NORMAL && mCurrentOperatingMode != REPLAY_DATA_INJECTION && if (mCurrentOperatingMode != NORMAL && mCurrentOperatingMode != REPLAY_DATA_INJECTION && !isWhiteListedPackage(connection->getPackageName())) { !isAllowListedPackage(connection->getPackageName())) { return INVALID_OPERATION; return INVALID_OPERATION; } } Loading Loading @@ -2295,14 +2295,14 @@ void SensorService::sendEventsFromCache(const sp<SensorEventConnection>& connect } } } } bool SensorService::isWhiteListedPackage(const String8& packageName) { bool SensorService::isAllowListedPackage(const String8& packageName) { return (packageName.contains(mWhiteListedPackage.string())); return (packageName.contains(mAllowListedPackage.string())); } } bool SensorService::isOperationRestrictedLocked(const String16& opPackageName) { bool SensorService::isOperationRestrictedLocked(const String16& opPackageName) { if (mCurrentOperatingMode == RESTRICTED) { if (mCurrentOperatingMode == RESTRICTED) { String8 package(opPackageName); String8 package(opPackageName); return !isWhiteListedPackage(package); return !isAllowListedPackage(package); } } return false; return false; } } Loading
services/sensorservice/SensorService.h +2 −2 Original line number Original line Diff line number Diff line Loading @@ -423,7 +423,7 @@ private: // If SensorService is operating in RESTRICTED mode, only select whitelisted packages are // If SensorService is operating in RESTRICTED mode, only select whitelisted packages are // allowed to register for or call flush on sensors. Typically only cts test packages are // allowed to register for or call flush on sensors. Typically only cts test packages are // allowed. // allowed. bool isWhiteListedPackage(const String8& packageName); bool isAllowListedPackage(const String8& packageName); // Returns true if a connection with the specified opPackageName has no access to sensors // Returns true if a connection with the specified opPackageName has no access to sensors // in the RESTRICTED mode (i.e. the service is in RESTRICTED mode, and the package is not // in the RESTRICTED mode (i.e. the service is in RESTRICTED mode, and the package is not Loading Loading @@ -522,7 +522,7 @@ private: // applications with this packageName are allowed to activate/deactivate or call flush on // applications with this packageName are allowed to activate/deactivate or call flush on // sensors. To run CTS this is can be set to ".cts." and only CTS tests will get access to // sensors. To run CTS this is can be set to ".cts." and only CTS tests will get access to // sensors. // sensors. String8 mWhiteListedPackage; String8 mAllowListedPackage; int mNextSensorRegIndex; int mNextSensorRegIndex; Vector<SensorRegistrationInfo> mLastNSensorRegistrations; Vector<SensorRegistrationInfo> mLastNSensorRegistrations; Loading