diff --git a/frameworks/innerkits/file_access/test/fuzztest/externalfileaccess_fuzzer/BUILD.gn b/frameworks/innerkits/file_access/test/fuzztest/externalfileaccess_fuzzer/BUILD.gn index 64c1204bd78d88f9ac9d86a1380eb34440061a7a..5a317be97705c2b7648bf67a90cd30874c94c813 100644 --- a/frameworks/innerkits/file_access/test/fuzztest/externalfileaccess_fuzzer/BUILD.gn +++ b/frameworks/innerkits/file_access/test/fuzztest/externalfileaccess_fuzzer/BUILD.gn @@ -26,6 +26,7 @@ ohos_fuzztest("ExternalFileAccessFuzzTest") { "//foundation/ability/ability_runtime/frameworks/kits/appkit/native/ability_runtime/context", "//foundation/filemanagement/user_file_service/frameworks/innerkits/file_access/include", "//foundation/distributeddatamgr/distributedfile/interfaces/kits/js/src/common", + "${BASE_DIR}/utils", ] sources = [ "external_file_access_fuzzer.cpp" ] @@ -51,6 +52,7 @@ ohos_fuzztest("ExternalFileAccessFuzzTest") { "access_token:libaccesstoken_sdk", "access_token:libnativetoken", "c_utils:utils", + "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", "ipc_js:rpc", "samgr:samgr_proxy", diff --git a/frameworks/innerkits/file_access/test/fuzztest/externalfileaccess_fuzzer/external_file_access_fuzzer.cpp b/frameworks/innerkits/file_access/test/fuzztest/externalfileaccess_fuzzer/external_file_access_fuzzer.cpp index 973b860b61f1a869e31c195ad8b407c47d03270b..735b61b9f977fbb66a5bf7cb8404b281b505b18e 100644 --- a/frameworks/innerkits/file_access/test/fuzztest/externalfileaccess_fuzzer/external_file_access_fuzzer.cpp +++ b/frameworks/innerkits/file_access/test/fuzztest/externalfileaccess_fuzzer/external_file_access_fuzzer.cpp @@ -25,6 +25,7 @@ #include "file_access_framework_errno.h" #include "file_access_helper.h" #include "iservice_registry.h" +#include "hilog_wrapper.h" namespace OHOS { using namespace std; @@ -40,8 +41,8 @@ const int UID_DEFAULT = 0; void SetNativeToken() { uint64_t tokenId; - const char **perms = new const char *[1]; - perms[0] = "ohos.permission.FILE_ACCESS_MANAGER"; + const char **perms = new const char *; + *perms = "ohos.permission.FILE_ACCESS_MANAGER"; NativeTokenInfoParams infoInstance = { .dcapsNum = 0, .permsNum = 1, @@ -56,7 +57,7 @@ void SetNativeToken() tokenId = GetAccessTokenId(&infoInstance); OHOS::Security::AccessToken::AccessTokenKit::ReloadNativeTokenInfo(); SetSelfTokenID(tokenId); - delete[] perms; + delete perms; } shared_ptr GetFileAccessHelper() @@ -72,6 +73,7 @@ shared_ptr GetFileAccessHelper() setuid(UID_TRANSFORM_TMP); int ret = FileAccessHelper::GetRegisteredFileAccessExtAbilityInfo(wantVec); if (ret != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("GetRegisteredFileAccessExtAbilityInfo failed."); return nullptr; } bool sus = false; @@ -85,12 +87,14 @@ shared_ptr GetFileAccessHelper() } } if (!sus) { + HILOG_ERROR("not found bundleName."); return nullptr; } vector wants {want}; g_fah = FileAccessHelper::Creator(remoteObj, wants); setuid(UID_DEFAULT); if (g_fah == nullptr) { + HILOG_ERROR("creator fileAccessHelper return nullptr."); return nullptr; } return g_fah; @@ -100,6 +104,7 @@ bool CreatorFuzzTest(const uint8_t* data, size_t size) { SetNativeToken(); if ((data == nullptr) || (size <= 0)) { + HILOG_ERROR("parameter data is nullptr or parameter size <= 0."); return false; } std::string bundleName(reinterpret_cast(data), size); @@ -113,6 +118,7 @@ bool CreatorFuzzTest(const uint8_t* data, size_t size) helper = FileAccessHelper::Creator(remoteObj, wants); setuid(UID_DEFAULT); if (helper == nullptr) { + HILOG_ERROR("creator return nullptr."); return false; } helper->Release(); @@ -122,11 +128,13 @@ bool CreatorFuzzTest(const uint8_t* data, size_t size) bool AccessFuzzTest(const uint8_t* data, size_t size) { if ((data == nullptr) || (size <= 0)) { + HILOG_ERROR("parameter data is nullptr or parameter size <= 0."); return false; } Uri uri(std::string(reinterpret_cast(data), size)); shared_ptr helper = GetFileAccessHelper(); if (helper == nullptr) { + HILOG_ERROR("GetFileAccessHelper return nullptr."); return false; } bool isExist = false; @@ -140,17 +148,20 @@ bool AccessFuzzTest(const uint8_t* data, size_t size) bool OpenFileFuzzTest(const uint8_t* data, size_t size) { if ((data == nullptr) || (size <= 0)) { + HILOG_ERROR("parameter data is nullptr or parameter size <= 0."); return false; } Uri uri(std::string(reinterpret_cast(data), size)); shared_ptr helper = GetFileAccessHelper(); if (helper == nullptr) { + HILOG_ERROR("GetFileAccessHelper return nullptr."); return false; } int fd = -1; int result = 0; result = helper->OpenFile(uri, WRITE_READ, fd); if (result != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("OpenFile failed. ret : %{public}d", result); return false; } close(fd); @@ -160,16 +171,19 @@ bool OpenFileFuzzTest(const uint8_t* data, size_t size) bool CreateFileFuzzTest(const uint8_t* data, size_t size) { if ((data == nullptr) || (size <= 0)) { + HILOG_ERROR("parameter data is nullptr or parameter size <= 0."); return false; } shared_ptr helper = GetFileAccessHelper(); if (helper == nullptr) { + HILOG_ERROR("GetFileAccessHelper return nullptr."); return false; } vector info; int result = helper->GetRoots(info); if (result != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("GetRoots failed. ret : %{public}d", result); return false; } for (size_t i = 0; i < info.size(); i++) { @@ -177,10 +191,12 @@ bool CreateFileFuzzTest(const uint8_t* data, size_t size) Uri newFileUri(""); result = helper->CreateFile(parentUri, "CreateFileFuzzTest", newFileUri); if (result != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("CreateFile failed. ret : %{public}d", result); return false; } result = helper->Delete(newFileUri); if (result != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("Delete failed. ret : %{public}d", result); return false; } } @@ -190,16 +206,19 @@ bool CreateFileFuzzTest(const uint8_t* data, size_t size) bool MkdirFuzzTest(const uint8_t* data, size_t size) { if ((data == nullptr) || (size <= 0)) { + HILOG_ERROR("parameter data is nullptr or parameter size <= 0."); return false; } shared_ptr helper = GetFileAccessHelper(); if (helper == nullptr) { + HILOG_ERROR("GetFileAccessHelper return nullptr."); return false; } vector info; int result = helper->GetRoots(info); if (result != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("GetRoots failed. ret : %{public}d", result); return false; } for (size_t i = 0; i < info.size(); i++) { @@ -207,10 +226,12 @@ bool MkdirFuzzTest(const uint8_t* data, size_t size) Uri newDirUri(""); result = helper->Mkdir(parentUri, "MkdirFuzzTest", newDirUri); if (result != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("Mkdir failed. ret : %{public}d", result); return false; } result = helper->Delete(newDirUri); if (result != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("Delete failed. ret : %{public}d", result); return false; } } @@ -220,15 +241,18 @@ bool MkdirFuzzTest(const uint8_t* data, size_t size) bool DeleteFuzzTest(const uint8_t* data, size_t size) { if ((data == nullptr) || (size <= 0)) { + HILOG_ERROR("parameter data is nullptr or parameter size <= 0."); return false; } Uri uri(std::string(reinterpret_cast(data), size)); shared_ptr helper = GetFileAccessHelper(); if (helper == nullptr) { + HILOG_ERROR("GetFileAccessHelper return nullptr."); return false; } int result = helper->Delete(uri); if (result != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("Delete failed. ret : %{public}d", result); return false; } return true; @@ -237,10 +261,12 @@ bool DeleteFuzzTest(const uint8_t* data, size_t size) bool MoveFuzzTest(const uint8_t* data, size_t size) { if ((data == nullptr) || (size <= 0)) { + HILOG_ERROR("parameter data is nullptr or parameter size <= 0."); return false; } shared_ptr helper = GetFileAccessHelper(); if (helper == nullptr) { + HILOG_ERROR("GetFileAccessHelper return nullptr."); return false; } vector info; @@ -254,28 +280,34 @@ bool MoveFuzzTest(const uint8_t* data, size_t size) Uri newDirUriTest2(""); result = helper->Mkdir(parentUri, "test1", newDirUriTest1); if (result != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("Mkdir failed. ret : %{public}d", result); return false; } result = helper->Mkdir(parentUri, "test2", newDirUriTest2); if (result != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("Mkdir failed. ret : %{public}d", result); return false; } Uri testUri(""); result = helper->CreateFile(newDirUriTest1, "test.txt", testUri); if (result != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("CreateFile failed. ret : %{public}d", result); return false; } Uri testUri2(""); result = helper->Move(testUri, newDirUriTest2, testUri2); if (result != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("Move failed. ret : %{public}d", result); return false; } result = helper->Delete(newDirUriTest1); if (result != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("Delete failed. ret : %{public}d", result); return false; } result = helper->Delete(newDirUriTest2); if (result != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("Delete failed. ret : %{public}d", result); return false; } } @@ -285,15 +317,18 @@ bool MoveFuzzTest(const uint8_t* data, size_t size) bool RenameFuzzTest(const uint8_t* data, size_t size) { if ((data == nullptr) || (size <= 0)) { + HILOG_ERROR("parameter data is nullptr or parameter size <= 0."); return false; } shared_ptr helper = GetFileAccessHelper(); if (helper == nullptr) { + HILOG_ERROR("GetFileAccessHelper return nullptr."); return false; } vector info; int result = helper->GetRoots(info); if (result != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("GetRoots failed. ret : %{public}d", result); return false; } for (size_t i = 0; i < info.size(); i++) { @@ -301,15 +336,18 @@ bool RenameFuzzTest(const uint8_t* data, size_t size) Uri newDirUriTest(""); result = helper->Mkdir(parentUri, "test", newDirUriTest); if (result != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("Mkdir failed. ret : %{public}d", result); return false; } Uri renameUri(""); result = helper->Rename(newDirUriTest, "testRename", renameUri); if (result != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("Rename failed. ret : %{public}d", result); return false; } result = helper->Delete(renameUri); if (result != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("Delete failed. ret : %{public}d", result); return false; } } @@ -319,10 +357,12 @@ bool RenameFuzzTest(const uint8_t* data, size_t size) bool ListFileFuzzTest(const uint8_t* data, size_t size) { if ((data == nullptr) || (size <= 0)) { + HILOG_ERROR("parameter data is nullptr or parameter size <= 0."); return false; } shared_ptr helper = GetFileAccessHelper(); if (helper == nullptr) { + HILOG_ERROR("GetFileAccessHelper return nullptr."); return false; } @@ -334,6 +374,7 @@ bool ListFileFuzzTest(const uint8_t* data, size_t size) FileFilter filter; int result = helper->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec); if (result != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("ListFile failed. ret : %{public}d", result); return false; } return true; @@ -342,10 +383,12 @@ bool ListFileFuzzTest(const uint8_t* data, size_t size) bool ScanFileFuzzTest(const uint8_t* data, size_t size) { if ((data == nullptr) || (size <= 0)) { + HILOG_ERROR("parameter data is nullptr or parameter size <= 0."); return false; } shared_ptr helper = GetFileAccessHelper(); if (helper == nullptr) { + HILOG_ERROR("GetFileAccessHelper return nullptr."); return false; } @@ -357,6 +400,28 @@ bool ScanFileFuzzTest(const uint8_t* data, size_t size) FileFilter filter; int result = helper->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec); if (result != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("ScanFile failed. ret : %{public}d", result); + return false; + } + return true; +} + +bool UriToFileInfoFuzzTest(const uint8_t* data, size_t size) +{ + if ((data == nullptr) || (size <= 0)) { + HILOG_ERROR("parameter data is nullptr or parameter size <= 0."); + return false; + } + Uri uri(std::string(reinterpret_cast(data), size)); + shared_ptr helper = GetFileAccessHelper(); + if (helper == nullptr) { + HILOG_ERROR("GetFileAccessHelper return nullptr."); + return false; + } + FileInfo fileinfo; + int result = helper->UriToFileInfo(uri, fileinfo); + if (result != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("UriToFileInfo failed. ret : %{public}d", result); return false; } return true; @@ -378,6 +443,6 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) OHOS::RenameFuzzTest(data, size); OHOS::ListFileFuzzTest(data, size); OHOS::ScanFileFuzzTest(data, size); + OHOS::UriToFileInfoFuzzTest(data, size); return 0; -} - +} \ No newline at end of file diff --git a/frameworks/innerkits/file_access/test/fuzztest/medialibraryfileaccess_fuzzer/BUILD.gn b/frameworks/innerkits/file_access/test/fuzztest/medialibraryfileaccess_fuzzer/BUILD.gn index ef104c86cbc22780a8b21df53eb0e898fe880c85..5bfe33a23002943498bf65cd452a8ed6018f3586 100644 --- a/frameworks/innerkits/file_access/test/fuzztest/medialibraryfileaccess_fuzzer/BUILD.gn +++ b/frameworks/innerkits/file_access/test/fuzztest/medialibraryfileaccess_fuzzer/BUILD.gn @@ -26,6 +26,7 @@ ohos_fuzztest("MedialibraryFileAccessFuzzTest") { "//foundation/ability/ability_runtime/frameworks/kits/appkit/native/ability_runtime/context", "//foundation/filemanagement/user_file_service/frameworks/innerkits/file_access/include", "//foundation/distributeddatamgr/distributedfile/interfaces/kits/js/src/common", + "${BASE_DIR}/utils", ] sources = [ "medialibrary_file_access_fuzzer.cpp" ] @@ -51,6 +52,7 @@ ohos_fuzztest("MedialibraryFileAccessFuzzTest") { "access_token:libaccesstoken_sdk", "access_token:libnativetoken", "c_utils:utils", + "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", "ipc_js:rpc", "samgr:samgr_proxy", diff --git a/frameworks/innerkits/file_access/test/fuzztest/medialibraryfileaccess_fuzzer/medialibrary_file_access_fuzzer.cpp b/frameworks/innerkits/file_access/test/fuzztest/medialibraryfileaccess_fuzzer/medialibrary_file_access_fuzzer.cpp index 57fc3748739e27d9c2b0eb996ae6ecb23034024b..85fe6e4e4f3d1d69eae19b12777dc4d1b8e9a6c9 100644 --- a/frameworks/innerkits/file_access/test/fuzztest/medialibraryfileaccess_fuzzer/medialibrary_file_access_fuzzer.cpp +++ b/frameworks/innerkits/file_access/test/fuzztest/medialibraryfileaccess_fuzzer/medialibrary_file_access_fuzzer.cpp @@ -26,6 +26,7 @@ #include "file_access_framework_errno.h" #include "file_access_helper.h" #include "iservice_registry.h" +#include "hilog_wrapper.h" namespace OHOS { using namespace std; @@ -41,8 +42,8 @@ const int UID_DEFAULT = 0; void SetNativeToken() { uint64_t tokenId; - const char **perms = new const char *[1]; - perms[0] = "ohos.permission.FILE_ACCESS_MANAGER"; + const char **perms = new const char *; + *perms = "ohos.permission.FILE_ACCESS_MANAGER"; NativeTokenInfoParams infoInstance = { .dcapsNum = 0, .permsNum = 1, @@ -57,7 +58,7 @@ void SetNativeToken() tokenId = GetAccessTokenId(&infoInstance); OHOS::Security::AccessToken::AccessTokenKit::ReloadNativeTokenInfo(); SetSelfTokenID(tokenId); - delete[] perms; + delete perms; } shared_ptr GetFileAccessHelper() @@ -73,6 +74,7 @@ shared_ptr GetFileAccessHelper() setuid(UID_TRANSFORM_TMP); int ret = FileAccessHelper::GetRegisteredFileAccessExtAbilityInfo(wantVec); if (ret != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("GetRegisteredFileAccessExtAbilityInfo failed."); return nullptr; } bool sus = false; @@ -86,11 +88,13 @@ shared_ptr GetFileAccessHelper() } } if (!sus) { + HILOG_ERROR("not found bundleName."); return nullptr; } vector wants {want}; g_fah = FileAccessHelper::Creator(remoteObj, wants); if (g_fah == nullptr) { + HILOG_ERROR("creator fileAccessHelper return nullptr."); return nullptr; } setuid(UID_DEFAULT); @@ -101,6 +105,7 @@ bool CreatorFuzzTest(const uint8_t* data, size_t size) { SetNativeToken(); if ((data == nullptr) || (size <= 0)) { + HILOG_ERROR("parameter data is nullptr or parameter size <= 0."); return false; } std::string bundleName(reinterpret_cast(data), size); @@ -113,6 +118,7 @@ bool CreatorFuzzTest(const uint8_t* data, size_t size) shared_ptr helper = nullptr; helper = FileAccessHelper::Creator(remoteObj, wants); if (helper == nullptr) { + HILOG_ERROR("creator return nullptr."); return false; } setuid(UID_DEFAULT); @@ -123,11 +129,13 @@ static tuple, Uri> GetDownloadUri() { shared_ptr helper = GetFileAccessHelper(); if (helper == nullptr) { + HILOG_ERROR("GetFileAccessHelper return nullptr."); return {nullptr, Uri("")}; } vector info; int result = helper->GetRoots(info); if (result != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("GetRoots failed. ret : %{public}d", result); return {helper, Uri("")}; } Uri rootUri(""); @@ -138,6 +146,7 @@ static tuple, Uri> GetDownloadUri() Uri downloadUri(rootUri.ToString() + "/Download"); result = helper->Access(downloadUri, isExist); if (result <= OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("Access failed. ret : %{public}d", result); return {helper, Uri("")}; } if (isExist) { @@ -146,6 +155,7 @@ static tuple, Uri> GetDownloadUri() downloadUri = Uri(""); result = helper->Mkdir(rootUri, "Download", downloadUri); if (result <= OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("Mkdir failed. ret : %{public}d", result); return {helper, Uri("")}; } return {helper, downloadUri}; @@ -154,16 +164,19 @@ static tuple, Uri> GetDownloadUri() bool AccessFuzzTest(const uint8_t* data, size_t size) { if ((data == nullptr) || (size <= 0)) { + HILOG_ERROR("parameter data is nullptr or parameter size <= 0."); return false; } auto [helper, downloadUri] = GetDownloadUri(); if (helper == nullptr || downloadUri.ToString() == "") { + HILOG_ERROR("helper is nullptr or downloadUri is empty"); return false; } Uri uri(downloadUri.ToString() + "/" + std::string(reinterpret_cast(data), size)); bool isExist = false; int result = helper->Access(uri, isExist); if (isExist != true || result != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("Access failed. ret : %{public}d", result); return false; } return true; @@ -172,16 +185,19 @@ bool AccessFuzzTest(const uint8_t* data, size_t size) bool OpenFileFuzzTest(const uint8_t* data, size_t size) { if ((data == nullptr) || (size <= 0)) { + HILOG_ERROR("parameter data is nullptr or parameter size <= 0."); return false; } auto [helper, downloadUri] = GetDownloadUri(); if (helper == nullptr || downloadUri.ToString() == "") { + HILOG_ERROR("helper is nullptr or downloadUri is empty"); return false; } Uri uri(downloadUri.ToString() + "/" + std::string(reinterpret_cast(data), size)); int fd = -1; int result = helper->OpenFile(uri, WRITE_READ, fd); if (result != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("OpenFile failed. ret : %{public}d", result); return false; } close(fd); @@ -191,19 +207,23 @@ bool OpenFileFuzzTest(const uint8_t* data, size_t size) bool CreateFileFuzzTest(const uint8_t* data, size_t size) { if ((data == nullptr) || (size <= 0)) { + HILOG_ERROR("parameter data is nullptr or parameter size <= 0."); return false; } auto [helper, downloadUri] = GetDownloadUri(); if (helper == nullptr || downloadUri.ToString() == "") { + HILOG_ERROR("helper is nullptr or downloadUri is empty"); return false; } Uri newFileUri(""); int result = helper->CreateFile(downloadUri, std::string(reinterpret_cast(data), size), newFileUri); if (result != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("CreateFile failed. ret : %{public}d", result); return false; } result = helper->Delete(newFileUri); if (result != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("Delete failed. ret : %{public}d", result); return false; } return true; @@ -212,19 +232,23 @@ bool CreateFileFuzzTest(const uint8_t* data, size_t size) bool MkdirFuzzTest(const uint8_t* data, size_t size) { if ((data == nullptr) || (size <= 0)) { + HILOG_ERROR("parameter data is nullptr or parameter size <= 0."); return false; } auto [helper, downloadUri] = GetDownloadUri(); if (helper == nullptr || downloadUri.ToString() == "") { + HILOG_ERROR("helper is nullptr or downloadUri is empty"); return false; } Uri newDirUri(""); int result = helper->Mkdir(downloadUri, std::string(reinterpret_cast(data), size), newDirUri); if (result != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("Mkdir failed. ret : %{public}d", result); return false; } result = helper->Delete(newDirUri); if (result != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("Delete failed. ret : %{public}d", result); return false; } return true; @@ -233,15 +257,18 @@ bool MkdirFuzzTest(const uint8_t* data, size_t size) bool DeleteFuzzTest(const uint8_t* data, size_t size) { if ((data == nullptr) || (size <= 0)) { + HILOG_ERROR("parameter data is nullptr or parameter size <= 0."); return false; } auto [helper, downloadUri] = GetDownloadUri(); if (helper == nullptr || downloadUri.ToString() == "") { + HILOG_ERROR("helper is nullptr or downloadUri is empty"); return false; } Uri uri(downloadUri.ToString() + "/" + std::string(reinterpret_cast(data), size)); int result = helper->Delete(uri); if (result != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("Delete failed. ret : %{public}d", result); return false; } return true; @@ -250,38 +277,46 @@ bool DeleteFuzzTest(const uint8_t* data, size_t size) bool MoveFuzzTest(const uint8_t* data, size_t size) { if ((data == nullptr) || (size <= 0)) { + HILOG_ERROR("parameter data is nullptr or parameter size <= 0."); return false; } auto [helper, downloadUri] = GetDownloadUri(); if (helper == nullptr || downloadUri.ToString() == "") { + HILOG_ERROR("helper is nullptr or downloadUri is empty"); return false; } Uri newDirUriTest1(""); Uri newDirUriTest2(""); int result = helper->Mkdir(downloadUri, "test1", newDirUriTest1); if (result != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("Mkdir failed. ret : %{public}d", result); return false; } result = helper->Mkdir(downloadUri, "test2", newDirUriTest2); if (result != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("Mkdir failed. ret : %{public}d", result); return false; } Uri testUri(""); result = helper->CreateFile(newDirUriTest1, std::string(reinterpret_cast(data), size), testUri); if (result != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("CreateFile failed. ret : %{public}d", result); return false; } Uri testUri2(""); result = helper->Move(testUri, newDirUriTest2, testUri2); if (result != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("Move failed. ret : %{public}d", result); return false; } result = helper->Delete(newDirUriTest1); if (result != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("Delete failed. ret : %{public}d", result); return false; } result = helper->Delete(newDirUriTest2); if (result != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("Delete failed. ret : %{public}d", result); return false; } return true; @@ -290,24 +325,29 @@ bool MoveFuzzTest(const uint8_t* data, size_t size) bool RenameFuzzTest(const uint8_t* data, size_t size) { if ((data == nullptr) || (size <= 0)) { + HILOG_ERROR("parameter data is nullptr or parameter size <= 0."); return false; } auto [helper, downloadUri] = GetDownloadUri(); if (helper == nullptr || downloadUri.ToString() == "") { + HILOG_ERROR("helper is nullptr or downloadUri is empty"); return false; } Uri newDirUriTest(""); int result = helper->Mkdir(downloadUri, "test", newDirUriTest); if (result != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("Mkdir failed. ret : %{public}d", result); return false; } Uri renameUri(""); result = helper->Rename(newDirUriTest, std::string(reinterpret_cast(data), size), renameUri); if (result != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("Rename failed. ret : %{public}d", result); return false; } result = helper->Delete(renameUri); if (result != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("Delete failed. ret : %{public}d", result); return false; } return true; @@ -316,10 +356,12 @@ bool RenameFuzzTest(const uint8_t* data, size_t size) bool ListFileFuzzTest(const uint8_t* data, size_t size) { if ((data == nullptr) || (size <= 0)) { + HILOG_ERROR("parameter data is nullptr or parameter size <= 0."); return false; } auto [helper, downloadUri] = GetDownloadUri(); if (helper == nullptr || downloadUri.ToString() == "") { + HILOG_ERROR("helper is nullptr or downloadUri is empty"); return false; } FileInfo fileInfo; @@ -330,6 +372,7 @@ bool ListFileFuzzTest(const uint8_t* data, size_t size) FileFilter filter; int result = helper->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec); if (result != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("ListFile failed. ret : %{public}d", result); return false; } return true; @@ -338,10 +381,12 @@ bool ListFileFuzzTest(const uint8_t* data, size_t size) bool ScanFileFuzzTest(const uint8_t* data, size_t size) { if ((data == nullptr) || (size <= 0)) { + HILOG_ERROR("parameter data is nullptr or parameter size <= 0."); return false; } auto [helper, downloadUri] = GetDownloadUri(); if (helper == nullptr || downloadUri.ToString() == "") { + HILOG_ERROR("helper is nullptr or downloadUri is empty"); return false; } FileInfo fileInfo; @@ -352,6 +397,7 @@ bool ScanFileFuzzTest(const uint8_t* data, size_t size) FileFilter filter; int result = helper->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec); if (result != OHOS::FileAccessFwk::ERR_OK) { + HILOG_ERROR("ScanFile failed. ret : %{public}d", result); return false; } return true; diff --git a/frameworks/innerkits/file_access/test/unittest/external_file_access_test.cpp b/frameworks/innerkits/file_access/test/unittest/external_file_access_test.cpp index 38324e574c934eccc2881b32130fdad8e16d4ad5..53bacf9fb9d3eab13b4dbac4d979a61aaf458a94 100644 --- a/frameworks/innerkits/file_access/test/unittest/external_file_access_test.cpp +++ b/frameworks/innerkits/file_access/test/unittest/external_file_access_test.cpp @@ -19,12 +19,14 @@ #include -#include "base/security/access_token/interfaces/innerkits/accesstoken/include/accesstoken_kit.h" -#include "base/security/access_token/interfaces/innerkits/token_setproc/include/token_setproc.h" -#include "base/security/access_token/interfaces/innerkits/nativetoken/include/nativetoken_kit.h" +#include "accesstoken_kit.h" +#include "token_setproc.h" +#include "nativetoken_kit.h" #include "file_access_framework_errno.h" #include "file_access_helper.h" #include "iservice_registry.h" +#include "context_impl.h" +#include "inotify_callback.h" namespace { using namespace std; @@ -40,6 +42,7 @@ shared_ptr g_fah = nullptr; int g_num = 0; const int UID_TRANSFORM_TMP = 20000000; const int UID_DEFAULT = 0; +shared_ptr g_context = nullptr; void SetNativeToken() { @@ -71,6 +74,8 @@ public: SetNativeToken(); auto saManager = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager(); auto remoteObj = saManager->GetSystemAbility(ABILITY_ID); + g_context = make_shared(); + g_context->SetToken(remoteObj); AAFwk::Want want; vector wantVec; setuid(UID_TRANSFORM_TMP); @@ -104,6 +109,16 @@ public: void TearDown() {}; }; +class ExternalNotify : public OHOS::FileAccessFwk::INotifyCallback { +public: + int OnNotify(const NotifyMessage &message) override + { + return 0; + } + + virtual ~ExternalNotify() = default; +}; + /** * @tc.number: user_file_service_external_file_access_OpenFile_0000 * @tc.name: external_file_access_OpenFile_0000 @@ -2038,7 +2053,6 @@ HWTEST_F(FileExtensionHelperTest, external_file_access_Access_0000, testing::ext { GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Access_0000"; try { - uint64_t selfTokenId = GetSelfTokenID(); vector info; int result = g_fah->GetRoots(info); EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK); @@ -2064,10 +2078,250 @@ HWTEST_F(FileExtensionHelperTest, external_file_access_Access_0000, testing::ext EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK); EXPECT_FALSE(isExist); } - SetSelfTokenID(selfTokenId); } catch (...) { GTEST_LOG_(ERROR) << "external_file_access_Access_0000 occurs an exception."; } GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Access_0000"; } + +/** + * @tc.number: user_file_service_external_file_access_UriToFileInfo_0000 + * @tc.name: external_file_access_UriToFileInfo_0000 + * @tc.desc: Test function of UriToFileInfo interface. + * @tc.desc: convert the root directory uri to fileinfo and call listfile for SUCCESS. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: SR000H0386 + */ +HWTEST_F(FileExtensionHelperTest, external_file_access_UriToFileInfo_0000, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_UriToFileInfo_0000"; + try { + vector info; + int result = g_fah->GetRoots(info); + EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK); + for (size_t i = 0; i < info.size(); i++) { + Uri parentUri(info[i].uri); + FileInfo fileinfo; + result = g_fah->UriToFileInfo(parentUri, fileinfo); + EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK); + + int64_t offset = 0; + int64_t maxCount = 1000; + FileFilter filter; + std::vector fileInfoVecTemp; + result = g_fah->ListFile(fileinfo, offset, maxCount, filter, fileInfoVecTemp); + EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK); + EXPECT_GE(fileInfoVecTemp.size(), OHOS::FileAccessFwk::ERR_OK); + } + } catch (...) { + GTEST_LOG_(ERROR) << "external_file_access_UriToFileInfo_0000 occurs an exception."; + } + GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_UriToFileInfo_0000"; +} + +/** + * @tc.number: user_file_service_external_file_access_UriToFileInfo_0001 + * @tc.name: external_file_access_UriToFileInfo_0001 + * @tc.desc: Test function of UriToFileInfo interface. + * @tc.desc: convert the general directory uri to fileinfo and call listfile for SUCCESS. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: SR000H0386 + */ +HWTEST_F(FileExtensionHelperTest, external_file_access_UriToFileInfo_0001, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_UriToFileInfo_0001"; + try { + vector info; + int result = g_fah->GetRoots(info); + EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK); + for (size_t i = 0; i < info.size(); i++) { + Uri parentUri(info[i].uri); + Uri newDirUriTest(""); + result = g_fah->Mkdir(parentUri, "testDir", newDirUriTest); + EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK); + + FileInfo dirInfo; + result = g_fah->UriToFileInfo(newDirUriTest, dirInfo); + EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK); + + int64_t offset = 0; + int64_t maxCount = 1000; + FileFilter filter; + std::vector fileInfoVec; + result = g_fah->ListFile(dirInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK); + EXPECT_GE(fileInfoVec.size(), OHOS::FileAccessFwk::ERR_OK); + + result = g_fah->Delete(newDirUriTest); + EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK); + } + } catch (...) { + GTEST_LOG_(ERROR) << "external_file_access_UriToFileInfo_0001 occurs an exception."; + } + GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_UriToFileInfo_0001"; +} + +/** + * @tc.number: user_file_service_external_file_access_UriToFileInfo_0002 + * @tc.name: external_file_access_UriToFileInfo_0002 + * @tc.desc: Test function of UriToFileInfo interface. + * @tc.desc: convert the general filepath uri to fileinfo and call listfile for ERROR. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: SR000H0386 + */ +HWTEST_F(FileExtensionHelperTest, external_file_access_UriToFileInfo_0002, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_UriToFileInfo_0002"; + try { + vector info; + int result = g_fah->GetRoots(info); + EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK); + for (size_t i = 0; i < info.size(); i++) { + Uri parentUri(info[i].uri); + Uri newDirUriTest(""); + result = g_fah->Mkdir(parentUri, "testDir", newDirUriTest); + EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK); + Uri newFileUri(""); + result = g_fah->CreateFile(newDirUriTest, "external_file_access_UriToFileInfo_0002.txt", newFileUri); + EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK); + + FileInfo fileinfo; + result = g_fah->UriToFileInfo(newFileUri, fileinfo); + EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK); + + int64_t offset = 0; + int64_t maxCount = 1000; + FileFilter filter; + std::vector fileInfoVecTemp; + result = g_fah->ListFile(fileinfo, offset, maxCount, filter, fileInfoVecTemp); + EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK); + EXPECT_EQ(fileInfoVecTemp.size(), OHOS::FileAccessFwk::ERR_OK); + + result = g_fah->Delete(newDirUriTest); + EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK); + } + } catch (...) { + GTEST_LOG_(ERROR) << "external_file_access_UriToFileInfo_0002 occurs an exception."; + } + GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_UriToFileInfo_0002"; +} + +/** + * @tc.number: user_file_service_external_file_access_on_0000 + * @tc.name: external_file_access_on_0000 + * @tc.desc: Test function of On interface. + * @tc.desc: register notify callback for SUCCESS. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: SR000H0386 + */ +HWTEST_F(FileExtensionHelperTest, external_file_access_on_0000, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_on_0000"; + try { + shared_ptr callback = make_shared(); + int result = g_fah->On(callback); + EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK); + } catch (...) { + GTEST_LOG_(ERROR) << "external_file_access_on_0000 occurs an exception."; + } + GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_on_0000"; +} + +/** + * @tc.number: user_file_service_external_file_access_off_0000 + * @tc.name: external_file_access_off_0000 + * @tc.desc: Test function of Off interface. + * @tc.desc: unregister notify for SUCCESS. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: SR000H0386 + */ +HWTEST_F(FileExtensionHelperTest, external_file_access_off_0000, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_off_0000"; + try { + int result = g_fah->Off(); + EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK); + } catch (...) { + GTEST_LOG_(ERROR) << "external_file_access_off_0000 occurs an exception."; + } + GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_off_0000"; +} + +/** + * @tc.number: user_file_service_external_file_access_creator_0000 + * @tc.name: external_file_access_creator_0000 + * @tc.desc: Test function of creator interface. + * @tc.desc: create file access helper for SUCCESS. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: SR000H0386 + */ +HWTEST_F(FileExtensionHelperTest, external_file_access_creator_0000, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_creator_0000"; + try { + setuid(UID_TRANSFORM_TMP); + shared_ptr helper = FileAccessHelper::Creator(g_context); + setuid(UID_DEFAULT); + ASSERT_TRUE(helper != nullptr); + bool succ = helper->Release(); + EXPECT_TRUE(succ); + } catch (...) { + GTEST_LOG_(ERROR) << "external_file_access_creator_0000 occurs an exception."; + } + GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_creator_0000"; +} + +/** + * @tc.number: user_file_service_external_file_access_creator_0001 + * @tc.name: external_file_access_creator_0001 + * @tc.desc: Test function of creator interface. + * @tc.desc: create file access helper for SUCCESS. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: SR000H0386 + */ +HWTEST_F(FileExtensionHelperTest, external_file_access_creator_0001, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_creator_0001"; + try { + AAFwk::Want want; + vector wantVec; + setuid(UID_TRANSFORM_TMP); + int ret = FileAccessHelper::GetRegisteredFileAccessExtAbilityInfo(wantVec); + EXPECT_EQ(ret, OHOS::FileAccessFwk::ERR_OK); + bool sus = false; + for (size_t i = 0; i < wantVec.size(); i++) { + auto element = wantVec[i].GetElement(); + if (element.GetBundleName() == "com.ohos.UserFile.ExternalFileManager" && + element.GetAbilityName() == "FileExtensionAbility") { + want = wantVec[i]; + sus = true; + break; + } + } + EXPECT_TRUE(sus); + vector wants {want}; + shared_ptr helper = FileAccessHelper::Creator(g_context, wants); + setuid(UID_DEFAULT); + ASSERT_TRUE(helper != nullptr); + bool succ = helper->Release(); + EXPECT_TRUE(succ); + } catch (...) { + GTEST_LOG_(ERROR) << "external_file_access_creator_0001 occurs an exception."; + } + GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_creator_0001"; +} } // namespace \ No newline at end of file diff --git a/frameworks/innerkits/file_access/test/unittest/medialibrary_file_access_test.cpp b/frameworks/innerkits/file_access/test/unittest/medialibrary_file_access_test.cpp index 5c76ba1f147b1503c3e0fb4a8ed30c3b611fd956..acb9dc7ebedd5bcdf931d82bfc21dd1d0e591e59 100644 --- a/frameworks/innerkits/file_access/test/unittest/medialibrary_file_access_test.cpp +++ b/frameworks/innerkits/file_access/test/unittest/medialibrary_file_access_test.cpp @@ -19,9 +19,9 @@ #include -#include "base/security/access_token/interfaces/innerkits/accesstoken/include/accesstoken_kit.h" -#include "base/security/access_token/interfaces/innerkits/token_setproc/include/token_setproc.h" -#include "base/security/access_token/interfaces/innerkits/nativetoken/include/nativetoken_kit.h" +#include "accesstoken_kit.h" +#include "token_setproc.h" +#include "nativetoken_kit.h" #include "file_access_framework_errno.h" #include "file_access_helper.h" #include "iservice_registry.h" @@ -2052,7 +2052,6 @@ HWTEST_F(FileAccessHelperTest, medialibrary_file_access_GetRoots_0000, testing:: { GTEST_LOG_(INFO) << "FileAccessHelperTest-begin medialibrary_file_access_GetRoots_0000"; try { - uint64_t selfTokenId = GetSelfTokenID(); vector info; int result = g_fah->GetRoots(info); EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK); @@ -2069,7 +2068,6 @@ HWTEST_F(FileAccessHelperTest, medialibrary_file_access_GetRoots_0000, testing:: EXPECT_EQ(info[0].displayName, displayName); EXPECT_EQ(info[0].deviceType, DEVICE_LOCAL_DISK); EXPECT_EQ(info[0].deviceFlags, DEVICE_FLAG_SUPPORTS_READ | DEVICE_FLAG_SUPPORTS_WRITE); - SetSelfTokenID(selfTokenId); } catch (...) { GTEST_LOG_(ERROR) << "medialibrary_file_access_GetRoots_0000 occurs an exception."; }