From c3afc87e0a0777bfc684e73117f90cea994bad1b Mon Sep 17 00:00:00 2001 From: youshugen Date: Tue, 5 Aug 2025 14:44:27 +0800 Subject: [PATCH] fix: code improve Signed-off-by: youshugen --- frameworks/native/src/battery_stats_info.cpp | 7 +-- .../servicetest/stats_service_stub_test.cpp | 44 +++++++++++++++++++ 2 files changed, 48 insertions(+), 3 deletions(-) diff --git a/frameworks/native/src/battery_stats_info.cpp b/frameworks/native/src/battery_stats_info.cpp index f0755cb..4a484f2 100755 --- a/frameworks/native/src/battery_stats_info.cpp +++ b/frameworks/native/src/battery_stats_info.cpp @@ -226,15 +226,16 @@ bool ParcelableBatteryStatsList::Marshalling(Parcel& parcel) const ParcelableBatteryStatsList* ParcelableBatteryStatsList::Unmarshalling(Parcel& parcel) { + constexpr int32_t PARAM_ZERO = 0; auto listPtr = std::make_unique(); int32_t size = parcel.ReadInt32(); - if (size > PARAM_MAX_NUM) { - STATS_HILOGE(COMP_FWK, "size exceed limit, size=%{public}d", size); + if (size < PARAM_ZERO || size > PARAM_MAX_NUM) { + STATS_HILOGE(COMP_FWK, "size is invalid, size=%{public}d", size); return nullptr; } - for (int32_t i = 0; i < size; ++i) { + for (int32_t i = PARAM_ZERO; i < size; ++i) { auto info = std::make_shared(); info->ReadFromParcel(parcel); listPtr->statsList_.emplace_back(info); diff --git a/test/unittest/src/servicetest/stats_service_stub_test.cpp b/test/unittest/src/servicetest/stats_service_stub_test.cpp index 25c4aac..364542b 100644 --- a/test/unittest/src/servicetest/stats_service_stub_test.cpp +++ b/test/unittest/src/servicetest/stats_service_stub_test.cpp @@ -151,4 +151,48 @@ HWTEST_F (StatsServiceStubTest, StatsServiceStubTest_005, TestSize.Level0) STATS_HILOGI(LABEL_TEST, "StatsServiceStubTest_005 end."); } + +/** + * @tc.name: StatsServiceStubTest_006 + * @tc.desc: test GetBatteryStats + * @tc.type: FUNC + * @tc.require: issueI6ARNA + */ +HWTEST_F (StatsServiceStubTest, StatsServiceStubTest_006, TestSize.Level0) +{ + STATS_HILOGI(LABEL_TEST, "StatsServiceStubTest_006 start."); + MessageParcel data; + Parcel reply; + MessageOption option; + sptr statsService = BatteryStatsService::GetInstance(); + sptr statsStub = static_cast>(statsService); + data.WriteInterfaceToken(BatteryStatsProxy::GetDescriptor()); + const int32_t PARAM_ZERO = 0; + reply.WriteInt32(PARAM_ZERO); + ParcelableBatteryStatsList* result = ParcelableBatteryStatsList::Unmarshalling(reply); + EXPECT_NE(result, nullptr); + STATS_HILOGI(LABEL_TEST, "StatsServiceStubTest_006 end."); +} + +/** + * @tc.name: StatsServiceStubTest_007 + * @tc.desc: test GetBatteryStats + * @tc.type: FUNC + * @tc.require: issueI6ARNA + */ +HWTEST_F (StatsServiceStubTest, StatsServiceStubTest_007, TestSize.Level0) +{ + STATS_HILOGI(LABEL_TEST, "StatsServiceStubTest_007 start."); + MessageParcel data; + Parcel reply; + MessageOption option; + sptr statsService = BatteryStatsService::GetInstance(); + sptr statsStub = static_cast>(statsService); + data.WriteInterfaceToken(BatteryStatsProxy::GetDescriptor()); + const int32_t PARAM_MINUS_ONE = -1; + reply.WriteInt32(PARAM_MINUS_ONE); + ParcelableBatteryStatsList* result = ParcelableBatteryStatsList::Unmarshalling(reply); + EXPECT_EQ(result, nullptr); + STATS_HILOGI(LABEL_TEST, "StatsServiceStubTest_007 end."); +} } \ No newline at end of file -- Gitee