summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Victor Hsieh <victorhsieh@google.com> 2019-10-10 16:12:18 -0700
committer Victor Hsieh <victorhsieh@google.com> 2019-10-11 12:50:26 -0700
commit12b4d480768e1ad0b80c99b02a23d31096818cfa (patch)
treead2c98dec4f4adb7d7a8a260b0cd350f4d8011a9
parent561e2861dff5d61b69855cc56072db99624148d8 (diff)
Clean up: use ScopedUtfChars for consistency
Also fix indents. Test: atest com.android.apkverity.ApkVerityTest Bug: 142504243 Change-Id: I3b7116650aebaa6f921ac04d033a6521554f7298
-rw-r--r--services/core/jni/com_android_server_security_VerityUtils.cpp25
1 files changed, 15 insertions, 10 deletions
diff --git a/services/core/jni/com_android_server_security_VerityUtils.cpp b/services/core/jni/com_android_server_security_VerityUtils.cpp
index 3f165af007ba..906b5688d51f 100644
--- a/services/core/jni/com_android_server_security_VerityUtils.cpp
+++ b/services/core/jni/com_android_server_security_VerityUtils.cpp
@@ -18,6 +18,7 @@
#include <nativehelper/JNIHelp.h>
#include <nativehelper/ScopedPrimitiveArray.h>
+#include <nativehelper/ScopedUtfChars.h>
#include "jni.h"
#include <utils/Log.h>
@@ -73,11 +74,13 @@ namespace android {
namespace {
int enableFsverity(JNIEnv* env, jobject /* clazz */, jstring filePath, jbyteArray signature) {
- const char* path = env->GetStringUTFChars(filePath, nullptr);
- ::android::base::unique_fd rfd(open(path, O_RDONLY | O_CLOEXEC));
- env->ReleaseStringUTFChars(filePath, path);
+ ScopedUtfChars path(env, filePath);
+ if (path.c_str() == nullptr) {
+ return EINVAL;
+ }
+ ::android::base::unique_fd rfd(open(path.c_str(), O_RDONLY | O_CLOEXEC));
if (rfd.get() < 0) {
- return errno;
+ return errno;
}
ScopedByteArrayRO signature_bytes(env, signature);
if (signature_bytes.get() == nullptr) {
@@ -94,7 +97,7 @@ int enableFsverity(JNIEnv* env, jobject /* clazz */, jstring filePath, jbyteArra
arg.sig_ptr = reinterpret_cast<uintptr_t>(signature_bytes.get());
if (ioctl(rfd.get(), FS_IOC_ENABLE_VERITY, &arg) < 0) {
- return errno;
+ return errno;
}
return 0;
}
@@ -106,14 +109,16 @@ int measureFsverity(JNIEnv* env, jobject /* clazz */, jstring filePath) {
fsverity_digest *data = reinterpret_cast<fsverity_digest *>(&bytes);
data->digest_size = kSha256Bytes; // the only input/output parameter
- const char* path = env->GetStringUTFChars(filePath, nullptr);
- ::android::base::unique_fd rfd(open(path, O_RDONLY | O_CLOEXEC));
- env->ReleaseStringUTFChars(filePath, path);
+ ScopedUtfChars path(env, filePath);
+ if (path.c_str() == nullptr) {
+ return EINVAL;
+ }
+ ::android::base::unique_fd rfd(open(path.c_str(), O_RDONLY | O_CLOEXEC));
if (rfd.get() < 0) {
- return errno;
+ return errno;
}
if (ioctl(rfd.get(), FS_IOC_MEASURE_VERITY, data) < 0) {
- return errno;
+ return errno;
}
return 0;
}