diff --git a/tests/unittests/backup_api/backup_impl/service_proxy_test.cpp b/tests/unittests/backup_api/backup_impl/service_proxy_test.cpp index 63ad75d97bd9dfa65fcea2edea0311867da60d22..2dec0d3e68e3fea77128952e6862aca03fd5a138 100644 --- a/tests/unittests/backup_api/backup_impl/service_proxy_test.cpp +++ b/tests/unittests/backup_api/backup_impl/service_proxy_test.cpp @@ -934,7 +934,7 @@ HWTEST_F(ServiceProxyTest, SUB_Service_proxy_OnLoadSystemAbilitySuccess_0100, te GTEST_LOG_(INFO) << "SUB_Service_proxy_OnLoadSystemAbilitySuccess_0100 proxy_ == nullptr"; return; } - sptr loadCallback = new ServiceProxy::ServiceProxyLoadCallback(); + sptr loadCallback = sptr(new ServiceProxy::ServiceProxyLoadCallback()); EXPECT_NE(loadCallback, nullptr); loadCallback->OnLoadSystemAbilitySuccess(SERVICE_ID, nullptr); loadCallback = nullptr; @@ -957,7 +957,7 @@ HWTEST_F(ServiceProxyTest, SUB_Service_proxy_OnLoadSystemAbilitySuccess_0101, te GTEST_LOG_(INFO) << "SUB_Service_proxy_OnLoadSystemAbilitySuccess_0101 proxy_ == nullptr"; return; } - sptr loadCallback = new ServiceProxy::ServiceProxyLoadCallback(); + sptr loadCallback = sptr(new ServiceProxy::ServiceProxyLoadCallback()); EXPECT_NE(loadCallback, nullptr); int32_t systemAbilityId = 0; sptr remoteObject = new MockIRemoteObject(); @@ -982,7 +982,7 @@ HWTEST_F(ServiceProxyTest, SUB_Service_proxy_OnLoadSystemAbilitySuccess_0102, te GTEST_LOG_(INFO) << "SUB_Service_proxy_OnLoadSystemAbilitySuccess_0102 proxy_ == nullptr"; return; } - sptr loadCallback = new ServiceProxy::ServiceProxyLoadCallback(); + sptr loadCallback = sptr(new ServiceProxy::ServiceProxyLoadCallback()); EXPECT_NE(loadCallback, nullptr); int32_t systemAbilityId = 0; loadCallback->OnLoadSystemAbilitySuccess(systemAbilityId, nullptr); @@ -1006,7 +1006,7 @@ HWTEST_F(ServiceProxyTest, SUB_Service_proxy_OnLoadSystemAbilitySuccess_0103, te GTEST_LOG_(INFO) << "SUB_Service_proxy_OnLoadSystemAbilitySuccess_0103 proxy_ == nullptr"; return; } - sptr loadCallback = new ServiceProxy::ServiceProxyLoadCallback(); + sptr loadCallback = sptr(new ServiceProxy::ServiceProxyLoadCallback()); EXPECT_NE(loadCallback, nullptr); sptr remoteObject = new MockIRemoteObject(); loadCallback->OnLoadSystemAbilitySuccess(SERVICE_ID, remoteObject); @@ -1030,7 +1030,7 @@ HWTEST_F(ServiceProxyTest, SUB_Service_proxy_OnLoadSystemAbilityFail_0100, testi GTEST_LOG_(INFO) << "SUB_Service_proxy_OnLoadSystemAbilityFail_0100 proxy_ == nullptr"; return; } - sptr loadCallback = new ServiceProxy::ServiceProxyLoadCallback(); + sptr loadCallback = sptr(new ServiceProxy::ServiceProxyLoadCallback()); EXPECT_NE(loadCallback, nullptr); loadCallback->OnLoadSystemAbilityFail(SERVICE_ID); loadCallback = nullptr; @@ -1061,7 +1061,7 @@ HWTEST_F(ServiceProxyTest, SUB_Service_proxy_GetInstance_0100, testing::ext::Tes SetMockLoadSystemAbility(true); proxy = ServiceProxy::GetInstance(); EXPECT_EQ(proxy, nullptr); - sptr loadCallback = new ServiceProxy::ServiceProxyLoadCallback(); + sptr loadCallback = sptr(new ServiceProxy::ServiceProxyLoadCallback()); sptr object = new MockIRemoteObject(); loadCallback->OnLoadSystemAbilitySuccess(SERVICE_ID, object); GTEST_LOG_(INFO) << "GetInstance is ok"; diff --git a/tools/backup_tool/src/main.cpp b/tools/backup_tool/src/main.cpp index 9b977652ef6972a5dd81d5e087b19c68c157da6d..57964e4525ce935d543735d3e5a080bbde5c2721 100644 --- a/tools/backup_tool/src/main.cpp +++ b/tools/backup_tool/src/main.cpp @@ -20,6 +20,7 @@ int main() } #else +#include "b_resources/b_constants.h" #include "errors.h" #include "tools_op.h" #include "tools_op_backup.h" @@ -96,6 +97,10 @@ int ParseOpAndExecute(const int argc, char *const argv[]) // 注册下命令 ToolRegister(); int flag = -1; + if (argc >= BConstants::PARSE_OPS_MAX_COUNT) { + printf("backup_tool: too many ops\nTry 'backup_tool help' for more information.\n"); + return flag; + } for (int i = 1; i < argc; i++) { // 暂存 {argv[1]...argv[i]}; vector curOp; diff --git a/utils/include/b_resources/b_constants.h b/utils/include/b_resources/b_constants.h index 447cde28b8b02f1a7eff64ca4b5d276661f5de9c..b7da3372e6baefa9f94da1c6a1bb82ebe6b25ea2 100644 --- a/utils/include/b_resources/b_constants.h +++ b/utils/include/b_resources/b_constants.h @@ -93,6 +93,9 @@ constexpr int APP_ON_PROCESS_MAX_TIMEOUT = 1000; // 应用的onProcess接口最 constexpr int FIRST_CALL_APP_ON_PROCESS_MAX_TIMEOUT = 15000; // 首次调用应用的onProcess接口最大超时时间为15秒 constexpr int APP_ON_PROCESS_TIMEOUT_MAX_COUNT = 3; // 应用的onProcess接口超时的上限次数 +constexpr int BUNDLE_NAME_MAX_LENGTH = 256; +constexpr int PARSE_OPS_MAX_COUNT = 256; + // backup.para内配置项的名称,该配置项值为true时可在不更新hap包的情况下,可以读取包管理元数据配置文件的内容 static inline std::string BACKUP_DEBUG_OVERRIDE_EXTENSION_CONFIG_KEY = "backup.debug.overrideExtensionConfig"; static const bool BACKUP_DEBUG_OVERRIDE_EXTENSION_CONFIG_DEFAULT_VALUE = false; diff --git a/utils/src/b_sa/b_sa_utils.cpp b/utils/src/b_sa/b_sa_utils.cpp index 399cb10269a26f1a124ea9d4957ea154737e1b20..b19231ddd7583f9bdf7eff6ea2e9e25b2d7ca434 100644 --- a/utils/src/b_sa/b_sa_utils.cpp +++ b/utils/src/b_sa/b_sa_utils.cpp @@ -13,6 +13,7 @@ * limitations under the License. */ +#include "b_resources/b_constants.h" #include "b_sa/b_sa_utils.h" #include "access_token.h" #include "accesstoken_kit.h" @@ -30,6 +31,9 @@ bool SAUtils::IsSABundleName(std::string bundleName) if (bundleName.empty()) { return false; } + if (bundleName.size() >= BConstants::BUNDLE_NAME_MAX_LENGTH) { + return false; + } for (size_t i = 0; i < bundleName.size(); i++) { if (!std::isdigit(bundleName[i])) { return false;