diff --git a/interfaces/inner_api/dataobs_manager/include/dataobs_mgr_changeinfo.h b/interfaces/inner_api/dataobs_manager/include/dataobs_mgr_changeinfo.h index bebdb25426..1f54a93260 100644 --- a/interfaces/inner_api/dataobs_manager/include/dataobs_mgr_changeinfo.h +++ b/interfaces/inner_api/dataobs_manager/include/dataobs_mgr_changeinfo.h @@ -37,6 +37,7 @@ struct ChangeInfo { mutable std::list uris_ = {}; const void *data_ = nullptr; uint32_t size_ = 0; + static constexpr int LIST_MAX_COUNT = 3000; }; } // namespace AAFwk } // namespace OHOS diff --git a/services/dataobsmgr/src/dataobs_mgr_changeinfo.cpp b/services/dataobsmgr/src/dataobs_mgr_changeinfo.cpp index c9354969b3..ffc76a6dab 100644 --- a/services/dataobsmgr/src/dataobs_mgr_changeinfo.cpp +++ b/services/dataobsmgr/src/dataobs_mgr_changeinfo.cpp @@ -53,6 +53,9 @@ bool ChangeInfo::Unmarshalling(ChangeInfo &output, MessageParcel &parcel) if (!parcel.ReadUint32(len)) { return false; } + if (len > LIST_MAX_COUNT) { + return false; + } std::list uris; for (uint32_t i = 0; i < len; i++) {