mirror of
https://github.com/Evolution-X-Devices/device_google_wahoo
synced 2026-02-02 05:11:28 +00:00
folio_daemon: Avoid UAF with stale sensor handle am: 948ad9c58c
Change-Id: I1a8f3de8a7ebe0c9c268a93d7e8b59415a60cf57
This commit is contained in:
@@ -45,6 +45,7 @@ int main(void) {
|
||||
ASensorRef hallSensor;
|
||||
ALooper *looper;
|
||||
ASensorEventQueue *eventQueue = nullptr;
|
||||
int32_t hallMinDelay = 0;
|
||||
time_t lastWarn = 0;
|
||||
int attemptCount = 0;
|
||||
|
||||
@@ -87,6 +88,14 @@ int main(void) {
|
||||
|
||||
// Get Hall-effect sensor events from the NDK
|
||||
sensorManager = ASensorManager_getInstanceForPackage(nullptr);
|
||||
looper = ALooper_forThread();
|
||||
if (looper == nullptr) {
|
||||
looper = ALooper_prepare(ALOOPER_PREPARE_ALLOW_NON_CALLBACKS);
|
||||
}
|
||||
|
||||
eventQueue = ASensorManager_createEventQueue(sensorManager, looper, 0, NULL,
|
||||
NULL);
|
||||
|
||||
/*
|
||||
* As long as we are unable to get the sensor handle, periodically retry
|
||||
* and emit an error message at a low frequency to prevent high CPU usage
|
||||
@@ -98,6 +107,7 @@ int main(void) {
|
||||
hallSensor = ASensorManager_getDefaultSensor(sensorManager,
|
||||
SENSOR_TYPE);
|
||||
if (hallSensor != nullptr) {
|
||||
hallMinDelay = ASensor_getMinDelay(hallSensor);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -112,16 +122,8 @@ int main(void) {
|
||||
sleep(RETRY_PERIOD);
|
||||
}
|
||||
|
||||
looper = ALooper_forThread();
|
||||
if (looper == nullptr) {
|
||||
looper = ALooper_prepare(ALOOPER_PREPARE_ALLOW_NON_CALLBACKS);
|
||||
}
|
||||
|
||||
eventQueue = ASensorManager_createEventQueue(sensorManager, looper, 0, NULL,
|
||||
NULL);
|
||||
err = ASensorEventQueue_registerSensor(eventQueue, hallSensor,
|
||||
ASensor_getMinDelay(hallSensor),
|
||||
10000);
|
||||
hallMinDelay, 10000);
|
||||
if (err < 0) {
|
||||
ALOGE("Unable to register for Hall-effect sensor events");
|
||||
goto out;
|
||||
|
||||
Reference in New Issue
Block a user