已开启
fix null pointer dereference in ohos.file.backup.impl.cpp #2263
fix null pointer dereference in ohos.file.backup.impl.cpp #2263
已开启
dongtingchi创建于 23 天前
1 个文件变更+150-0
@@ -102,6 +102,10 @@ public:
102 if (callbackRef_)102 if (callbackRef_)
103 {103 {
104 ani_env *env = taihe::get_env();104 ani_env *env = taihe::get_env();
105+ if (env == nullptr) {
106+ HILOGE("ani_env is nullptr");
107+ return;
108+ }
105 ani_status status = ANI_OK;109 ani_status status = ANI_OK;
106 status = env->GlobalReference_Delete(callbackRef_);110 status = env->GlobalReference_Delete(callbackRef_);
107 if (ANI_OK != status)111 if (ANI_OK != status)
@@ -124,6 +128,11 @@ public:
124 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");128 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");
125 return data;129 return data;
126 }130 }
131+ if (!bSessionBackup) {
132+ HILOGE("bSessionBackup is nullptr");
133+ ::taihe::set_business_error(static_cast<int32_t>(BError::Codes::SA_INVAL_ARG), "bSessionBackup is nullptr");
134+ return data;
135+ }
127 auto fd = std::make_shared<UniqueFd>();136 auto fd = std::make_shared<UniqueFd>();
128 *fd = bSessionBackup->GetLocalCapabilities();137 *fd = bSessionBackup->GetLocalCapabilities();
129 data.fd = fd->Release();138 data.fd = fd->Release();
@@ -141,6 +150,11 @@ public:
141 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");150 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");
142 return;151 return;
143 }152 }
153+ if (!bSessionBackup) {
154+ HILOGE("bSessionBackup is nullptr");
155+ ::taihe::set_business_error(static_cast<int32_t>(BError::Codes::SA_INVAL_ARG), "bSessionBackup is nullptr");
156+ return;
157+ }
144 std::vector<BIncrementalData> bundleNames;158 std::vector<BIncrementalData> bundleNames;
145 ::taihe::array<::ohos::file::backup::IncrementalBackupTime> dataListTemp(dataList);159 ::taihe::array<::ohos::file::backup::IncrementalBackupTime> dataListTemp(dataList);
146 for (auto it = dataListTemp.begin(); it != dataListTemp.end(); ++it)160 for (auto it = dataListTemp.begin(); it != dataListTemp.end(); ++it)
@@ -165,6 +179,11 @@ public:
165 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");179 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");
166 return;180 return;
167 }181 }
182+ if (!bSessionBackup) {
183+ HILOGE("bSessionBackup is nullptr");
184+ ::taihe::set_business_error(static_cast<int32_t>(BError::Codes::SA_INVAL_ARG), "bSessionBackup is nullptr");
185+ return;
186+ }
168 std::vector<std::string> bundleNames;187 std::vector<std::string> bundleNames;
169 std::vector<std::string> bundleInfos;188 std::vector<std::string> bundleInfos;
170 ::taihe::array<::taihe::string> bundles(bundlesToBackup);189 ::taihe::array<::taihe::string> bundles(bundlesToBackup);
@@ -196,6 +215,11 @@ public:
196 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");215 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");
197 return;216 return;
198 }217 }
218+ if (!bSessionBackup) {
219+ HILOGE("bSessionBackup is nullptr");
220+ ::taihe::set_business_error(static_cast<int32_t>(BError::Codes::SA_INVAL_ARG), "bSessionBackup is nullptr");
221+ return;
222+ }
199 223 
200 std::vector<std::string> bundleNames;224 std::vector<std::string> bundleNames;
201 ::taihe::array<::taihe::string> bundles(bundlesToBackup);225 ::taihe::array<::taihe::string> bundles(bundlesToBackup);
@@ -218,6 +242,11 @@ public:
218 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");242 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");
219 return;243 return;
220 }244 }
245+ if (!bSessionBackup) {
246+ HILOGE("bSessionBackup is nullptr");
247+ ::taihe::set_business_error(static_cast<int32_t>(BError::Codes::SA_INVAL_ARG), "bSessionBackup is nullptr");
248+ return;
249+ }
221 bSessionBackup->Release();250 bSessionBackup->Release();
222 }251 }
223 252 
@@ -233,6 +262,11 @@ public:
233 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");262 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");
234 return result;263 return result;
235 }264 }
265+ if (!bSessionBackup) {
266+ HILOGE("bSessionBackup is nullptr");
267+ ::taihe::set_business_error(static_cast<int32_t>(BError::Codes::SA_INVAL_ARG), "bSessionBackup is nullptr");
268+ return result;
269+ }
236 result = bSessionBackup->Cancel(std::string(bundleName));270 result = bSessionBackup->Cancel(std::string(bundleName));
237 return result;271 return result;
238 }272 }
@@ -249,6 +283,11 @@ public:
249 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");283 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");
250 return result;284 return result;
251 }285 }
286+ if (!bSessionBackup) {
287+ HILOGE("bSessionBackup is nullptr");
288+ ::taihe::set_business_error(static_cast<int32_t>(BError::Codes::SA_INVAL_ARG), "bSessionBackup is nullptr");
289+ return result;
290+ }
252 ErrCode code = bSessionBackup->CleanBundleTempDir(std::string(bundleName));291 ErrCode code = bSessionBackup->CleanBundleTempDir(std::string(bundleName));
253 if (BError(BError::Codes::OK) == code)292 if (BError(BError::Codes::OK) == code)
254 {293 {
@@ -270,6 +309,11 @@ public:
270 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");309 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");
271 return ::taihe::string("");310 return ::taihe::string("");
272 }311 }
312+ if (!bSessionBackup) {
313+ HILOGE("bSessionBackup is nullptr");
314+ ::taihe::set_business_error(static_cast<int32_t>(BError::Codes::SA_INVAL_ARG), "bSessionBackup is nullptr");
315+ return ::taihe::string("");
316+ }
273 std::string bundleNameTemp(bundleName);317 std::string bundleNameTemp(bundleName);
274 std::string exInfoTemp(extInfo);318 std::string exInfoTemp(extInfo);
275 auto compatInfo = std::make_shared<std::string>();319 auto compatInfo = std::make_shared<std::string>();
@@ -339,6 +383,10 @@ public:
339 if (callbackRef_)383 if (callbackRef_)
340 {384 {
341 ani_env *env = taihe::get_env();385 ani_env *env = taihe::get_env();
386+ if (env == nullptr) {
387+ HILOGE("ani_env is nullptr");
388+ return;
389+ }
342 ani_status status = ANI_OK;390 ani_status status = ANI_OK;
343 status = env->GlobalReference_Delete(callbackRef_);391 status = env->GlobalReference_Delete(callbackRef_);
344 if (ANI_OK != status)392 if (ANI_OK != status)
@@ -361,6 +409,12 @@ public:
361 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");409 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");
362 return data;410 return data;
363 }411 }
412+ if (!bIncrementalRestoreSession) {
413+ HILOGE("bIncrementalRestoreSession is nullptr");
414+ ::taihe::set_business_error(static_cast<int32_t>(BError::Codes::SA_INVAL_ARG),
415+ "bIncrementalRestoreSession is nullptr");
416+ return data;
417+ }
364 auto fd = make_shared<UniqueFd>();418 auto fd = make_shared<UniqueFd>();
365 *fd = bIncrementalRestoreSession->GetLocalCapabilities();419 *fd = bIncrementalRestoreSession->GetLocalCapabilities();
366 data.fd = fd->Release();420 data.fd = fd->Release();
@@ -379,6 +433,12 @@ public:
379 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");433 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");
380 return;434 return;
381 }435 }
436+ if (!bIncrementalRestoreSession) {
437+ HILOGE("bIncrementalRestoreSession is nullptr");
438+ ::taihe::set_business_error(static_cast<int32_t>(BError::Codes::SA_INVAL_ARG),
439+ "bIncrementalRestoreSession is nullptr");
440+ return;
441+ }
382 442 
383 std::vector<std::string> bundleNames;443 std::vector<std::string> bundleNames;
384 std::vector<std::string> bundleInfos;444 std::vector<std::string> bundleInfos;
@@ -412,6 +472,12 @@ public:
412 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");472 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");
413 return;473 return;
414 }474 }
475+ if (!bIncrementalRestoreSession) {
476+ HILOGE("bIncrementalRestoreSession is nullptr");
477+ ::taihe::set_business_error(static_cast<int32_t>(BError::Codes::SA_INVAL_ARG),
478+ "bIncrementalRestoreSession is nullptr");
479+ return;
480+ }
415 481 
416 std::vector<std::string> bundleNames;482 std::vector<std::string> bundleNames;
417 ::taihe::array<::taihe::string> bundles(bundlesToBackup);483 ::taihe::array<::taihe::string> bundles(bundlesToBackup);
@@ -434,6 +500,12 @@ public:
434 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");500 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");
435 return;501 return;
436 }502 }
503+ if (!bIncrementalRestoreSession) {
504+ HILOGE("bIncrementalRestoreSession is nullptr");
505+ ::taihe::set_business_error(static_cast<int32_t>(BError::Codes::SA_INVAL_ARG),
506+ "bIncrementalRestoreSession is nullptr");
507+ return;
508+ }
437 509 
438 std::string bundleName(fileMeta.bundleName);510 std::string bundleName(fileMeta.bundleName);
439 std::string fileName(fileMeta.uri);511 std::string fileName(fileMeta.uri);
@@ -454,6 +526,12 @@ public:
454 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");526 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");
455 return;527 return;
456 }528 }
529+ if (!bIncrementalRestoreSession) {
530+ HILOGE("bIncrementalRestoreSession is nullptr");
531+ ::taihe::set_business_error(static_cast<int32_t>(BError::Codes::SA_INVAL_ARG),
532+ "bIncrementalRestoreSession is nullptr");
533+ return;
534+ }
457 535 
458 std::string bundleName(fileMeta.bundleName);536 std::string bundleName(fileMeta.bundleName);
459 std::string fileName(fileMeta.uri);537 std::string fileName(fileMeta.uri);
@@ -471,6 +549,12 @@ public:
471 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");549 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");
472 return;550 return;
473 }551 }
552+ if (!bIncrementalRestoreSession) {
553+ HILOGE("bIncrementalRestoreSession is nullptr");
554+ ::taihe::set_business_error(static_cast<int32_t>(BError::Codes::SA_INVAL_ARG),
555+ "bIncrementalRestoreSession is nullptr");
556+ return;
557+ }
474 bIncrementalRestoreSession->Release();558 bIncrementalRestoreSession->Release();
475 }559 }
476 560 
@@ -486,6 +570,12 @@ public:
486 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");570 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");
487 return 0;571 return 0;
488 }572 }
573+ if (!bIncrementalRestoreSession) {
574+ HILOGE("bIncrementalRestoreSession is nullptr");
575+ ::taihe::set_business_error(static_cast<int32_t>(BError::Codes::SA_INVAL_ARG),
576+ "bIncrementalRestoreSession is nullptr");
577+ return 0;
578+ }
489 result = bIncrementalRestoreSession->Cancel(std::string(bundleName));579 result = bIncrementalRestoreSession->Cancel(std::string(bundleName));
490 return result;580 return result;
491 }581 }
@@ -502,6 +592,12 @@ public:
502 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");592 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");
503 return result;593 return result;
504 }594 }
595+ if (!bIncrementalRestoreSession) {
596+ HILOGE("bIncrementalRestoreSession is nullptr");
597+ ::taihe::set_business_error(static_cast<int32_t>(BError::Codes::SA_INVAL_ARG),
598+ "bIncrementalRestoreSession is nullptr");
599+ return result;
600+ }
505 ErrCode code = bIncrementalRestoreSession->CleanBundleTempDir(std::string(bundleName));601 ErrCode code = bIncrementalRestoreSession->CleanBundleTempDir(std::string(bundleName));
506 if (BError(BError::Codes::OK) == code)602 if (BError(BError::Codes::OK) == code)
507 {603 {
@@ -523,6 +619,12 @@ public:
523 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");619 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");
524 return ::taihe::string("");620 return ::taihe::string("");
525 }621 }
622+ if (!bIncrementalRestoreSession) {
623+ HILOGE("bIncrementalRestoreSession is nullptr");
624+ ::taihe::set_business_error(static_cast<int32_t>(BError::Codes::SA_INVAL_ARG),
625+ "bIncrementalRestoreSession is nullptr");
626+ return ::taihe::string("");
627+ }
526 std::string bundleNameTemp(bundleName);628 std::string bundleNameTemp(bundleName);
527 std::string exInfoTemp(extInfo);629 std::string exInfoTemp(extInfo);
528 auto compatInfo = std::make_shared<std::string>();630 auto compatInfo = std::make_shared<std::string>();
@@ -602,6 +704,12 @@ public:
602 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");704 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");
603 return data;705 return data;
604 }706 }
707+ if (!bIncrementalBackupSession) {
708+ HILOGE("bIncrementalBackupSession is nullptr");
709+ ::taihe::set_business_error(static_cast<int32_t>(BError::Codes::SA_INVAL_ARG),
710+ "bIncrementalBackupSession is nullptr");
711+ return data;
712+ }
605 auto fd = make_shared<UniqueFd>();713 auto fd = make_shared<UniqueFd>();
606 *fd = bIncrementalBackupSession->GetLocalCapabilities();714 *fd = bIncrementalBackupSession->GetLocalCapabilities();
607 HILOGE("UniqueFd.fd = %{public}d", fd->Get());715 HILOGE("UniqueFd.fd = %{public}d", fd->Get());
@@ -621,6 +729,12 @@ public:
621 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");729 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");
622 return;730 return;
623 }731 }
732+ if (!bIncrementalBackupSession) {
733+ HILOGE("bIncrementalBackupSession is nullptr");
734+ ::taihe::set_business_error(static_cast<int32_t>(BError::Codes::SA_INVAL_ARG),
735+ "bIncrementalBackupSession is nullptr");
736+ return;
737+ }
624 std::vector<BIncrementalData> bundleNames;738 std::vector<BIncrementalData> bundleNames;
625 ::taihe::array<::ohos::file::backup::IncrementalBackupTime> dataListTemp(dataList);739 ::taihe::array<::ohos::file::backup::IncrementalBackupTime> dataListTemp(dataList);
626 for (auto it = dataListTemp.begin(); it != dataListTemp.end(); ++it)740 for (auto it = dataListTemp.begin(); it != dataListTemp.end(); ++it)
@@ -644,6 +758,12 @@ public:
644 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");758 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");
645 return;759 return;
646 }760 }
761+ if (!bIncrementalBackupSession) {
762+ HILOGE("bIncrementalBackupSession is nullptr");
763+ ::taihe::set_business_error(static_cast<int32_t>(BError::Codes::SA_INVAL_ARG),
764+ "bIncrementalBackupSession is nullptr");
765+ return;
766+ }
647 std::vector<BIncrementalData> backupBundles;767 std::vector<BIncrementalData> backupBundles;
648 std::vector<std::string> bundleInfos;768 std::vector<std::string> bundleInfos;
649 ::taihe::array<::ohos::file::backup::IncrementalBackupData> bundles(bundlesToBackup);769 ::taihe::array<::ohos::file::backup::IncrementalBackupData> bundles(bundlesToBackup);
@@ -679,6 +799,12 @@ public:
679 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");799 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");
680 return;800 return;
681 }801 }
802+ if (!bIncrementalBackupSession) {
803+ HILOGE("bIncrementalBackupSession is nullptr");
804+ ::taihe::set_business_error(static_cast<int32_t>(BError::Codes::SA_INVAL_ARG),
805+ "bIncrementalBackupSession is nullptr");
806+ return;
807+ }
682 std::vector<BIncrementalData> backupBundles;808 std::vector<BIncrementalData> backupBundles;
683 std::vector<std::string> bundleInfos;809 std::vector<std::string> bundleInfos;
684 ::taihe::array<::ohos::file::backup::IncrementalBackupData> bundles(bundlesToBackup);810 ::taihe::array<::ohos::file::backup::IncrementalBackupData> bundles(bundlesToBackup);
@@ -720,6 +846,12 @@ public:
720 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");846 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");
721 return;847 return;
722 }848 }
849+ if (!bIncrementalBackupSession) {
850+ HILOGE("bIncrementalBackupSession is nullptr");
851+ ::taihe::set_business_error(static_cast<int32_t>(BError::Codes::SA_INVAL_ARG),
852+ "bIncrementalBackupSession is nullptr");
853+ return;
854+ }
723 bIncrementalBackupSession->Release();855 bIncrementalBackupSession->Release();
724 }856 }
725 857 
@@ -735,6 +867,12 @@ public:
735 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");867 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");
736 return SYSTEM_PERMISSION;868 return SYSTEM_PERMISSION;
737 }869 }
870+ if (!bIncrementalBackupSession) {
871+ HILOGE("bIncrementalBackupSession is nullptr");
872+ ::taihe::set_business_error(static_cast<int32_t>(BError::Codes::SA_INVAL_ARG),
873+ "bIncrementalBackupSession is nullptr");
874+ return BACKUP_PERMISSION;
875+ }
738 result = bIncrementalBackupSession->Cancel(std::string(bundleName));876 result = bIncrementalBackupSession->Cancel(std::string(bundleName));
739 return result;877 return result;
740 }878 }
@@ -751,6 +889,12 @@ public:
751 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");889 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");
752 return result;890 return result;
753 }891 }
892+ if (!bIncrementalBackupSession) {
893+ HILOGE("bIncrementalBackupSession is nullptr");
894+ ::taihe::set_business_error(static_cast<int32_t>(BError::Codes::SA_INVAL_ARG),
895+ "bIncrementalBackupSession is nullptr");
896+ return result;
897+ }
754 ErrCode code = bIncrementalBackupSession->CleanBundleTempDir(std::string(bundleName));898 ErrCode code = bIncrementalBackupSession->CleanBundleTempDir(std::string(bundleName));
755 if (BError(BError::Codes::OK) == code)899 if (BError(BError::Codes::OK) == code)
756 {900 {
@@ -772,6 +916,12 @@ public:
772 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");916 ::taihe::set_business_error(SYSTEM_PERMISSION, "IsSystemApp error");
773 return ::taihe::string("");917 return ::taihe::string("");
774 }918 }
919+ if (!bIncrementalBackupSession) {
920+ HILOGE("bIncrementalBackupSession is nullptr");
921+ ::taihe::set_business_error(static_cast<int32_t>(BError::Codes::SA_INVAL_ARG),
922+ "bIncrementalBackupSession is nullptr");
923+ return ::taihe::string("");
924+ }
775 std::string bundleNameTemp(bundleName);925 std::string bundleNameTemp(bundleName);
776 std::string exInfoTemp(extInfo);926 std::string exInfoTemp(extInfo);
777 auto compatInfo = std::make_shared<std::string>();927 auto compatInfo = std::make_shared<std::string>();