diff --git a/interfaces/inner_api/dlp_fuse/test/unittest/src/dlp_file_test.cpp b/interfaces/inner_api/dlp_fuse/test/unittest/src/dlp_file_test.cpp index 20ad287c1e1736e3e4537cd8cadd628f842551dd..03421d65d76946917e3ceb181f0dfbf2ed98c10a 100644 --- a/interfaces/inner_api/dlp_fuse/test/unittest/src/dlp_file_test.cpp +++ b/interfaces/inner_api/dlp_fuse/test/unittest/src/dlp_file_test.cpp @@ -275,6 +275,44 @@ HWTEST_F(DlpFileTest, OpenDlpFile002, TestSize.Level0) ASSERT_EQ(DlpFileManager::GetInstance().CloseDlpFile(g_Dlpfile), 0); g_Dlpfile = nullptr; } + +/** + * @tc.name: TestDlpFile + * @tc.desc: test dlp file function + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(DlpFileTest, TestDlpFile002, TestSize.Level1) +{ + g_plainFileFd = open("/data/fuse_test.txt", O_CREAT | O_RDWR | O_TRUNC, S_IRWXU | S_IRWXG | S_IRWXO); + g_dlpFileFd = open("/data/fuse_test.txt.dlp", O_CREAT | O_RDWR | O_TRUNC, S_IRWXU | S_IRWXG | S_IRWXO); + ASSERT_GE(g_plainFileFd, 0); + ASSERT_GE(g_dlpFileFd, 0); + char buffer[] = "123456"; + ASSERT_NE(write(g_plainFileFd, buffer, sizeof(buffer)), -1); + struct DlpProperty prop; + GenerateRandProperty(prop); + int32_t result = DlpFileManager::GetInstance().GenerateDlpFile(g_plainFileFd, + g_dlpFileFd, prop, g_Dlpfile, DLP_TEST_DIR); + ASSERT_EQ(result, 0); + ASSERT_NE(g_Dlpfile, nullptr); + + std::string appId = "12345"; + g_Dlpfile->SetAppId(appId); + ASSERT_EQ(g_Dlpfile->GetAppId(), appId); + + std::string fileId = "12345"; + g_Dlpfile->SetFileId(fileId); + ASSERT_EQ(g_Dlpfile->GetFileId(), fileId); + + int32_t accountType = 0; + g_Dlpfile->SetAccountType(accountType); + ASSERT_EQ(g_Dlpfile->GetAccountType(), accountType); + + result = DlpFileManager::GetInstance().CloseDlpFile(g_Dlpfile); + ASSERT_EQ(result, 0); + g_Dlpfile = nullptr; +} } // namespace DlpPermission } // namespace Security } // namespace OHOS diff --git a/interfaces/inner_api/dlp_parse/test/dlp_raw_file_test.cpp b/interfaces/inner_api/dlp_parse/test/dlp_raw_file_test.cpp index 0d5305d082013cd2ff3970617bd89e6bbacbeb98..c4400a638adc3078789fa3ce4394f2287fee6a19 100644 --- a/interfaces/inner_api/dlp_parse/test/dlp_raw_file_test.cpp +++ b/interfaces/inner_api/dlp_parse/test/dlp_raw_file_test.cpp @@ -351,4 +351,15 @@ HWTEST_F(DlpRawFileTest, DoDlpHIAECryptOperationTest, TestSize.Level0) DlpBlob message2 = { 0, nullptr }; std::shared_ptr filePtr = std::make_shared(-1, "mp4"); ASSERT_EQ(filePtr->DoDlpHIAECryptOperation(message1, message2, 0, true), DLP_PARSE_ERROR_VALUE_INVALID); -} \ No newline at end of file +} + +/** + * @tc.name: ParseEnterpriseFileId + * @tc.desc: test ParseEnterpriseFileId + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(DlpRawFileTest, ParseEnterpriseFileIdTest, TestSize.Level1) +{ + ASSERT_NE(filePtr->ParseEnterpriseFileId(0, 0), DLP_OK); +} diff --git a/interfaces/inner_api/dlp_permission/src/dlp_permission_public_interface.cpp b/interfaces/inner_api/dlp_permission/src/dlp_permission_public_interface.cpp index c617e68dba5535f06b60bfdcc2637d687ee9bd56..c56f3b3ad6a9cb37dcdd2aac8891e04816c5b183 100644 --- a/interfaces/inner_api/dlp_permission/src/dlp_permission_public_interface.cpp +++ b/interfaces/inner_api/dlp_permission/src/dlp_permission_public_interface.cpp @@ -33,8 +33,7 @@ static const std::string DLP_REAL_TYPE = "realFileType"; static const std::string CERT_SIZE = "certSize"; static const uint32_t MIN_REALY_TYPE_LENGTH = 2; static const uint32_t MAX_REALY_TYPE_LENGTH = 5; -static const uint32_t EXTRA_CERT_SIZE = UINT32_MAX; -static const uint32_t MAX_CERT_SIZE = 30 * 1024; +static const uint32_t LIMIT_CERT_SIZE = 10000; static bool checkParams(GenerateInfoParams& params, const nlohmann::json& jsonObj, const std::string& versionKey, const std::string& infoKey) { @@ -76,8 +75,14 @@ int32_t GenerateDlpGeneralInfo(const GenerateInfoParams& params, std::string& ge if (params.realType.size() >= MIN_REALY_TYPE_LENGTH && params.realType.size() <= MAX_REALY_TYPE_LENGTH) { dlp_general_info[DLP_REAL_TYPE] = params.realType; } - dlp_general_info[CERT_SIZE] = params.certSize ^ EXTRA_CERT_SIZE; + dlp_general_info[CERT_SIZE] = params.certSize; generalInfo = dlp_general_info.dump(); + size_t pos = generalInfo.find(CERT_SIZE); + if (pos != std::string::npos && + params.certSize < LIMIT_CERT_SIZE && pos + CERT_SIZE.size() + 1 < generalInfo.size()) { + generalInfo = generalInfo.substr(0, pos + CERT_SIZE.size() + 1) + + " " + generalInfo.substr(pos + CERT_SIZE.size() + 1, generalInfo.size()); + } return DLP_OK; } @@ -100,10 +105,11 @@ int32_t ParseDlpGeneralInfo(const std::string& generalInfo, GenerateInfoParams& return DLP_PARSE_ERROR_VALUE_INVALID; } auto iter = jsonObj.find(DLP_OFFLINE_FLAG); - if ((iter == jsonObj.end()) || !(iter->is_boolean())) { + if (iter != jsonObj.end() && iter->is_boolean()) { + params.offlineAccessFlag = iter->get(); + } else { return DLP_PARSE_ERROR_VALUE_INVALID; } - params.offlineAccessFlag = iter->get(); iter = jsonObj.find(DLP_CONTACT_ACCOUNT); if (iter != jsonObj.end() && iter->is_string()) { params.contactAccount = iter->get(); @@ -125,7 +131,6 @@ int32_t ParseDlpGeneralInfo(const std::string& generalInfo, GenerateInfoParams& params.certSize = 0; if (iter != jsonObj.end() && iter->is_number_integer()) { params.certSize = iter->get(); - params.certSize = (params.certSize > MAX_CERT_SIZE) ? (params.certSize ^ EXTRA_CERT_SIZE) : params.certSize; } return DLP_OK; }