diff options
author | Jeff Hao <jeffhao@google.com> | 2014-03-28 15:43:37 -0700 |
---|---|---|
committer | Jeff Hao <jeffhao@google.com> | 2014-03-28 15:43:37 -0700 |
commit | cb4581aa13d6f43f705535818a4d0893d551be3a (patch) | |
tree | 903cbcb3852650c7e3105c0c1819e6e480091cd4 /runtime | |
parent | e759c9f01b558093466fc78f01900042120cd832 (diff) | |
download | art-cb4581aa13d6f43f705535818a4d0893d551be3a.zip art-cb4581aa13d6f43f705535818a4d0893d551be3a.tar.gz art-cb4581aa13d6f43f705535818a4d0893d551be3a.tar.bz2 |
Some fixes for comments and implied conversions.
Addresses comments in:
https://android-review.googlesource.com/#/c/89148/3
Change-Id: If21cfaa541210c8702371efd1e6d4f071a7b9ec3
Diffstat (limited to 'runtime')
-rw-r--r-- | runtime/native/java_lang_reflect_Constructor.cc | 2 | ||||
-rw-r--r-- | runtime/native/java_lang_reflect_Field.cc | 20 | ||||
-rw-r--r-- | runtime/native/java_lang_reflect_Method.cc | 2 | ||||
-rw-r--r-- | runtime/reflection.cc | 12 | ||||
-rw-r--r-- | runtime/reflection.h | 2 |
5 files changed, 19 insertions, 19 deletions
diff --git a/runtime/native/java_lang_reflect_Constructor.cc b/runtime/native/java_lang_reflect_Constructor.cc index d28ebd0..2445b53 100644 --- a/runtime/native/java_lang_reflect_Constructor.cc +++ b/runtime/native/java_lang_reflect_Constructor.cc @@ -68,7 +68,7 @@ static jobject Constructor_newInstance(JNIEnv* env, jobject javaMethod, jobjectA } jobject javaReceiver = soa.AddLocalReference<jobject>(receiver); - InvokeMethod(soa, javaMethod, javaReceiver, javaArgs, accessible); + InvokeMethod(soa, javaMethod, javaReceiver, javaArgs, (accessible == JNI_TRUE)); // Constructors are ()V methods, so we shouldn't touch the result of InvokeMethod. return javaReceiver; diff --git a/runtime/native/java_lang_reflect_Field.cc b/runtime/native/java_lang_reflect_Field.cc index 755708e..ce622d9 100644 --- a/runtime/native/java_lang_reflect_Field.cc +++ b/runtime/native/java_lang_reflect_Field.cc @@ -28,14 +28,14 @@ namespace art { -static bool ValidateFieldAccess(mirror::ArtField* field, mirror::Object* obj, bool is_set) +static bool VerifyFieldAccess(mirror::ArtField* field, mirror::Object* obj, bool is_set) SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) { if (field->IsFinal() && is_set) { ThrowIllegalAccessException(nullptr, StringPrintf("Cannot set final field: %s", PrettyField(field).c_str()).c_str()); return false; } - if (!ValidateAccess(obj, field->GetDeclaringClass(), field->GetAccessFlags())) { + if (!VerifyAccess(obj, field->GetDeclaringClass(), field->GetAccessFlags())) { ThrowIllegalAccessException(nullptr, StringPrintf("Cannot access field: %s", PrettyField(field).c_str()).c_str()); return false; @@ -123,8 +123,8 @@ static jobject Field_get(JNIEnv* env, jobject javaField, jobject javaObj, jboole DCHECK(soa.Self()->IsExceptionPending()); return nullptr; } - // Validate access. - if (!accessible && !ValidateFieldAccess(f, o, false)) { + // If field is not set to be accessible, verify it can be accessed by the caller. + if ((accessible == JNI_FALSE) && !VerifyFieldAccess(f, o, false)) { DCHECK(soa.Self()->IsExceptionPending()); return nullptr; } @@ -150,8 +150,8 @@ static JValue GetPrimitiveField(JNIEnv* env, jobject javaField, jobject javaObj, return JValue(); } - // Validate access. - if (!accessible && !ValidateFieldAccess(f, o, false)) { + // If field is not set to be accessible, verify it can be accessed by the caller. + if ((accessible == JNI_FALSE) && !VerifyFieldAccess(f, o, false)) { DCHECK(soa.Self()->IsExceptionPending()); return JValue(); } @@ -291,8 +291,8 @@ static void Field_set(JNIEnv* env, jobject javaField, jobject javaObj, jobject j DCHECK(soa.Self()->IsExceptionPending()); return; } - // Validate access. - if (!accessible && !ValidateFieldAccess(f, o, true)) { + // If field is not set to be accessible, verify it can be accessed by the caller. + if ((accessible == JNI_FALSE) && !VerifyFieldAccess(f, o, true)) { DCHECK(soa.Self()->IsExceptionPending()); return; } @@ -322,8 +322,8 @@ static void SetPrimitiveField(JNIEnv* env, jobject javaField, jobject javaObj, c return; } - // Validate access. - if (!accessible && !ValidateFieldAccess(f, o, true)) { + // If field is not set to be accessible, verify it can be accessed by the caller. + if ((accessible == JNI_FALSE) && !VerifyFieldAccess(f, o, true)) { DCHECK(soa.Self()->IsExceptionPending()); return; } diff --git a/runtime/native/java_lang_reflect_Method.cc b/runtime/native/java_lang_reflect_Method.cc index c23f65c..22e81e4 100644 --- a/runtime/native/java_lang_reflect_Method.cc +++ b/runtime/native/java_lang_reflect_Method.cc @@ -32,7 +32,7 @@ namespace art { static jobject Method_invoke(JNIEnv* env, jobject javaMethod, jobject javaReceiver, jobject javaArgs, jboolean accessible) { ScopedFastNativeObjectAccess soa(env); - return InvokeMethod(soa, javaMethod, javaReceiver, javaArgs, accessible); + return InvokeMethod(soa, javaMethod, javaReceiver, javaArgs, (accessible == JNI_TRUE)); } static jobject Method_getExceptionTypesNative(JNIEnv* env, jobject javaMethod) { diff --git a/runtime/reflection.cc b/runtime/reflection.cc index b38f9b4..6ed61f6 100644 --- a/runtime/reflection.cc +++ b/runtime/reflection.cc @@ -500,8 +500,8 @@ jobject InvokeMethod(const ScopedObjectAccess& soa, jobject javaMethod, return NULL; } - // Validate access. - if (!accessible && !ValidateAccess(receiver, declaring_class, m->GetAccessFlags())) { + // If method is not set to be accessible, verify it can be accessed by the caller. + if (!accessible && !VerifyAccess(receiver, declaring_class, m->GetAccessFlags())) { ThrowIllegalAccessException(nullptr, StringPrintf("Cannot access method: %s", PrettyMethod(m).c_str()).c_str()); return nullptr; @@ -794,19 +794,19 @@ bool UnboxPrimitiveForResult(const ThrowLocation& throw_location, mirror::Object return UnboxPrimitive(&throw_location, o, dst_class, nullptr, unboxed_value); } -bool ValidateAccess(mirror::Object* obj, mirror::Class* declaring_class, uint32_t access_flags) { +bool VerifyAccess(mirror::Object* obj, mirror::Class* declaring_class, uint32_t access_flags) { NthCallerVisitor visitor(Thread::Current(), 2); visitor.WalkStack(); mirror::Class* caller_class = visitor.caller->GetDeclaringClass(); - if (((access_flags & kAccPublic) && declaring_class->IsPublic()) || + if ((((access_flags & kAccPublic) != 0) && declaring_class->IsPublic()) || caller_class == declaring_class) { return true; } - if (access_flags & kAccPrivate) { + if ((access_flags & kAccPrivate) != 0) { return false; } - if (access_flags & kAccProtected) { + if ((access_flags & kAccProtected) != 0) { if (obj != nullptr && !obj->InstanceOf(caller_class) && !declaring_class->IsInSamePackage(caller_class)) { return false; diff --git a/runtime/reflection.h b/runtime/reflection.h index 5cc725f..d9a7228 100644 --- a/runtime/reflection.h +++ b/runtime/reflection.h @@ -74,7 +74,7 @@ jobject InvokeMethod(const ScopedObjectAccess& soa, jobject method, jobject rece bool VerifyObjectIsClass(mirror::Object* o, mirror::Class* c) SHARED_LOCKS_REQUIRED(Locks::mutator_lock_); -bool ValidateAccess(mirror::Object* obj, mirror::Class* declaring_class, uint32_t access_flags) +bool VerifyAccess(mirror::Object* obj, mirror::Class* declaring_class, uint32_t access_flags) SHARED_LOCKS_REQUIRED(Locks::mutator_lock_); } // namespace art |