summaryrefslogtreecommitdiffstats
path: root/runtime
diff options
context:
space:
mode:
authorJeff Hao <jeffhao@google.com>2014-03-28 15:43:37 -0700
committerJeff Hao <jeffhao@google.com>2014-03-28 15:43:37 -0700
commitcb4581aa13d6f43f705535818a4d0893d551be3a (patch)
tree903cbcb3852650c7e3105c0c1819e6e480091cd4 /runtime
parente759c9f01b558093466fc78f01900042120cd832 (diff)
downloadart-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.cc2
-rw-r--r--runtime/native/java_lang_reflect_Field.cc20
-rw-r--r--runtime/native/java_lang_reflect_Method.cc2
-rw-r--r--runtime/reflection.cc12
-rw-r--r--runtime/reflection.h2
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