diff --git a/frameworks/native/backup_ext/src/ext_backup_ani.cpp b/frameworks/native/backup_ext/src/ext_backup_ani.cpp index ad8d0530713de60c5da6a09ccfdb440e8295c4ba..2e25cf167341ec93a2694d2238e5c50b6101d83b 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 bd72c18a916cb9aab3eddfeee313a0403ebb0746..f49f3557ec871ea42b02c99ef315b689caaa5798 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 2a12db9328fe45f5679bde90d03a7f04cc228774..0a8e2b089fcfd0ed9ce7e022fbc24f7ca63b3760 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 8ba4067de8098b260f7970723987439a13936ac4..524c3f256e109987fbb1aed00337bd2b0031c13f 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; }