summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/os/Binder.java1
-rw-r--r--core/jni/android_util_Binder.cpp12
2 files changed, 3 insertions, 10 deletions
diff --git a/core/java/android/os/Binder.java b/core/java/android/os/Binder.java
index d492e0870b2e..fce3437db049 100644
--- a/core/java/android/os/Binder.java
+++ b/core/java/android/os/Binder.java
@@ -379,6 +379,7 @@ public class Binder implements IBinder {
*
* @see #clearCallingIdentity
*/
+ @CriticalNative
public static final native void restoreCallingIdentity(long token);
/**
diff --git a/core/jni/android_util_Binder.cpp b/core/jni/android_util_Binder.cpp
index e1180384fcc9..32b8fa61c8a0 100644
--- a/core/jni/android_util_Binder.cpp
+++ b/core/jni/android_util_Binder.cpp
@@ -960,17 +960,8 @@ static jlong android_os_Binder_clearCallingIdentity()
return IPCThreadState::self()->clearCallingIdentity();
}
-static void android_os_Binder_restoreCallingIdentity(JNIEnv* env, jobject clazz, jlong token)
+static void android_os_Binder_restoreCallingIdentity(jlong token)
{
- // XXX temporary validation check to debug crashes.
- int uid = (int)(token>>32);
- if (uid > 0 && uid < 999) {
- // In Android currently there are no uids in this range.
- char buf[128];
- sprintf(buf, "Restoring bad calling ident: 0x%" PRIx64, token);
- jniThrowException(env, "java/lang/IllegalStateException", buf);
- return;
- }
IPCThreadState::self()->restoreCallingIdentity(token);
}
@@ -1064,6 +1055,7 @@ static const JNINativeMethod gBinderMethods[] = {
{ "isHandlingTransaction", "()Z", (void*)android_os_Binder_isHandlingTransaction },
// @CriticalNative
{ "clearCallingIdentity", "()J", (void*)android_os_Binder_clearCallingIdentity },
+ // @CriticalNative
{ "restoreCallingIdentity", "(J)V", (void*)android_os_Binder_restoreCallingIdentity },
// @CriticalNative
{ "setThreadStrictModePolicy", "(I)V", (void*)android_os_Binder_setThreadStrictModePolicy },