From e76d557eac1092265784555a85c8f231679ca551 Mon Sep 17 00:00:00 2001 From: acy Date: Fri, 27 Jun 2025 16:08:35 +0800 Subject: [PATCH] =?UTF-8?q?ani=20=E5=91=8A=E8=AD=A6=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: acy Change-Id: I0cae4284592e3ddfa396f897bc82368cbb81653d --- frameworks/native/backup_ext/src/ext_backup_ani.cpp | 4 ++++ frameworks/native/backup_ext/src/ext_backup_ani_error.cpp | 4 ++++ interfaces/kits/ani/file_share/src/ani_file_share.cpp | 2 +- interfaces/kits/ani/file_uri/src/ani_file_uri.cpp | 8 ++++++++ 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/frameworks/native/backup_ext/src/ext_backup_ani.cpp b/frameworks/native/backup_ext/src/ext_backup_ani.cpp index ad8d05307..2e25cf167 100644 --- a/frameworks/native/backup_ext/src/ext_backup_ani.cpp +++ b/frameworks/native/backup_ext/src/ext_backup_ani.cpp @@ -97,6 +97,10 @@ ErrCode ExtBackupAni::CallEtsOnBackup() ErrCode ExtBackupAni::CallEtsOnRestore() { ani_vm *vm = nullptr; + if (stsRuntime_.GetAniEnv() == nullptr) { + HILOGE("Failed to tsRuntime_.GetAniEnv()"); + return EINVAL; + } if (ANI_OK != stsRuntime_.GetAniEnv()->GetVM(&vm)) { return EINVAL; } diff --git a/frameworks/native/backup_ext/src/ext_backup_ani_error.cpp b/frameworks/native/backup_ext/src/ext_backup_ani_error.cpp index bd72c18a9..f49f3557e 100644 --- a/frameworks/native/backup_ext/src/ext_backup_ani_error.cpp +++ b/frameworks/native/backup_ext/src/ext_backup_ani_error.cpp @@ -23,6 +23,10 @@ void AniError::ThrowBusinessError(ani_env *env, errorCode errCode, const std::st static const char *errorClsName = "L@ohos/base/BusinessError;"; HILOGD("Begin ThrowBusinessError."); + if (env == nullptr) { + HILOGE("env is nullptr"); + return; + } ani_class cls {}; if (ANI_OK != env->FindClass(errorClsName, &cls)) { HILOGE("find class BusinessError %{public}s failed", errorClsName); diff --git a/interfaces/kits/ani/file_share/src/ani_file_share.cpp b/interfaces/kits/ani/file_share/src/ani_file_share.cpp index 2a12db932..0a8e2b089 100644 --- a/interfaces/kits/ani/file_share/src/ani_file_share.cpp +++ b/interfaces/kits/ani/file_share/src/ani_file_share.cpp @@ -274,7 +274,7 @@ static void GrantUriPermission(ani_env *env, ani_string uri, ani_string bundleNa ThrowBusinessError(env, EINVAL, "GrantUriPermission is not System App!"); return; } - uriPermInfo.flag = wantConstantFlag; + uriPermInfo.flag = static_cast(wantConstantFlag); uriPermInfo.mode = GetModeFromFlag(wantConstantFlag); LOGD("GrantUriPermission uri: %{public}s, bundleName: %{public}s, flag: %{public}d, mode: %{public}s", uriStr.c_str(), bundleNameStr.c_str(), wantConstantFlag, uriPermInfo.mode.c_str()); diff --git a/interfaces/kits/ani/file_uri/src/ani_file_uri.cpp b/interfaces/kits/ani/file_uri/src/ani_file_uri.cpp index 8ba4067de..524c3f256 100644 --- a/interfaces/kits/ani/file_uri/src/ani_file_uri.cpp +++ b/interfaces/kits/ani/file_uri/src/ani_file_uri.cpp @@ -134,6 +134,8 @@ void FileUriConstructor(ani_env *env, ani_object obj, ani_string stringObj) if (env->FindNamespace("L@ohos/file/fileuri/fileUri;", &ns) != ANI_OK) { LOGE("Namespace L@ohos/file/fileuri/fileUri not found."); ThrowBusinessError(env, EPERM, "Namespace L@ohos/file/fileuri/fileUri not found."); + delete holder; + holder = nullptr; return; }; @@ -142,18 +144,24 @@ void FileUriConstructor(ani_env *env, ani_object obj, ani_string stringObj) if (env->Namespace_FindClass(ns, className, &cls) != ANI_OK) { LOGE("Not found class LFileUri in Namespace L@ohos/file/fileuri/fileUri."); ThrowBusinessError(env, EPERM, "Class LFileUri not found."); + delete holder; + holder = nullptr; return; } ani_method acquireObj; if (ANI_OK != env->Class_FindMethod(cls, "acquireFileUriEntity", "J:V", &acquireObj)) { LOGE("Not found method acquireFileUriEntity in class LFileUri."); + delete holder; + holder = nullptr; ThrowBusinessError(env, EPERM, "Method acquireFileUriEntity not found."); return; } if (ANI_OK != env->Object_CallMethod_Void(obj, acquireObj, reinterpret_cast(holder))) { LOGE("Call method acquireFileUriEntity failed."); + delete holder; + holder = nullptr; ThrowBusinessError(env, EPERM, "Call method acquireFileUriEntity failed."); return; } -- Gitee