Make sure caller verification is done inside a lock
This caller verification needs to be done in an atomic manner. There is a possible race condition in the following code. @BinderThread public boolean doSomething() { if (!calledFromValidUser()) { return false; } // possible race condition here. synchronized(mMethodMap) { // actual operations } } Insted, we should check the caller after taking a lock. @BinderThread public boolean doSomething() { synchronized(mMethodMap) { if (!calledFromValidUserLocked()) { return false; } // actual operations } } Bug: 34886274 Test: atest CtsInputMethodTestCases CtsInputMethodServiceHostTestCases Change-Id: I02df0307ce2aecc77de8fb2afaa39e5ecf8f3fe2
Loading
Please register or sign in to comment