From 713dc798cc6bc94a9bbd5dc3958d3bd7f972bddc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=9F=8E=E8=8C=B6=E8=AF=AD?= Date: Wed, 27 Aug 2025 14:59:28 +0800 Subject: [PATCH 01/12] fix code warning MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 小城茶语 --- .../cj/include/cj_native_calendar.h | 14 +++++------ calendarmanager/cj/src/cj_calendar.cpp | 23 ++++++++++++------- .../cj/src/cj_calendar_manager.cpp | 2 +- calendarmanager/cj/src/cj_native_util.cpp | 4 ++-- 4 files changed, 25 insertions(+), 18 deletions(-) diff --git a/calendarmanager/cj/include/cj_native_calendar.h b/calendarmanager/cj/include/cj_native_calendar.h index 484297b..82d540a 100644 --- a/calendarmanager/cj/include/cj_native_calendar.h +++ b/calendarmanager/cj/include/cj_native_calendar.h @@ -61,14 +61,14 @@ public: return m_id; } private: - CalendarAccount m_account; - CalendarConfig m_config; + CalendarAccount m_account = {"", "", std::nullopt}; + CalendarConfig m_config = {true, 0}; int m_id = 0; - std::unique_ptr m_eventUri; - std::unique_ptr m_attendeeUri; - std::unique_ptr m_calendarUri; - std::unique_ptr m_reminderUrl; - std::unique_ptr m_instanceUrl; + std::unique_ptr m_eventUri = nullptr; + std::unique_ptr m_attendeeUri = nullptr; + std::unique_ptr m_calendarUri = nullptr; + std::unique_ptr m_reminderUrl = nullptr; + std::unique_ptr m_instanceUrl = nullptr; }; } // namespace OHOS::Calendar #endif // NATIVE_CALENDAR_H \ No newline at end of file diff --git a/calendarmanager/cj/src/cj_calendar.cpp b/calendarmanager/cj/src/cj_calendar.cpp index 9931e42..8d53ea2 100644 --- a/calendarmanager/cj/src/cj_calendar.cpp +++ b/calendarmanager/cj/src/cj_calendar.cpp @@ -43,11 +43,11 @@ namespace CalendarApi { CArrI64 VectorToArrayI64(const std::vector &vec, int32_t* errcode) { CArrI64 arr = {}; - arr.size = vec.size(); - if (arr.size == 0) { + arr.size = static_cast(vec.size()); + if (arr.size == 0 || arr.size > (SIZE_MAX * sizeof(int64_t))) { return arr; } - arr.head = static_cast(malloc(sizeof(int64_t) * vec.size())); + arr.head = static_cast(malloc(sizeof(int64_t) * arr.size)); if (arr.head == nullptr) { *errcode = CJ_ERR_OUT_OF_MEMORY; LOG_ERROR("CArrI64 malloc failed"); @@ -65,6 +65,9 @@ namespace CalendarApi { return nullptr; } auto length = origin.length() + 1; + if (length == 0 || length > (SIZE_MAX * sizeof(int64_t))) { + return nullptr; + } char *res = static_cast(malloc(sizeof(char) * length)); if (res == nullptr) { return nullptr; @@ -152,13 +155,13 @@ namespace CalendarApi { CArrAttendee CJCalendar::BuildCArrAttendee(vector attendees, int32_t* errcode) { CArrAttendee arr = {}; - arr.size = attendees.size(); - if (arr.size == 0) { + arr.size = static_cast(attendees.size()); + if (arr.size == 0 || arr.size > (SIZE_MAX * sizeof(int64_t))) { LOG_ERROR("Invalid size for memory allocation"); *errcode = CJ_ERR_OUT_OF_MEMORY; return arr; } - arr.head = static_cast(malloc(sizeof(CAttendee) * attendees.size())); + arr.head = static_cast(malloc(sizeof(CAttendee) * arr.size)); if (arr.head == nullptr) { *errcode = CJ_ERR_OUT_OF_MEMORY; LOG_ERROR("CAttendee malloc failed"); @@ -298,7 +301,7 @@ namespace CalendarApi { } } - CArrEvents CJCalendar::VectorToCArrEvents(std::vector events, int32_t* errcode) + CArrEvents CJCalendar::VectorToCArrEvents(std::vector &events, int32_t* errcode) { CArrEvents arr = {}; arr.head = static_cast(malloc(sizeof(CEvent) * events.size())); @@ -458,7 +461,11 @@ namespace CalendarApi { return arr; } std::vector events = calendar_->GetEvents(eventFilter, keys); - arr = VectorToCArrEvents(events, errcode); + if (events.size() == 0 || events.size() > (SIZE_MAX * sizeof(int64_t))) { + LOG_ERROR("events.size() is error"); + return arr; + } + arr = VectorToCArrEvents(&events, errcode); if (*errcode != 0) { CArrEventfree(arr); } diff --git a/calendarmanager/cj/src/cj_calendar_manager.cpp b/calendarmanager/cj/src/cj_calendar_manager.cpp index 9ce30af..ea261e8 100644 --- a/calendarmanager/cj/src/cj_calendar_manager.cpp +++ b/calendarmanager/cj/src/cj_calendar_manager.cpp @@ -123,7 +123,7 @@ CArrI64 CJCalendarManager::GetAllCalendars(int32_t* errcode) *errcode = CJ_ERR_OUT_OF_MEMORY; return ret; } - auto arr = static_cast(malloc(size * sizeof(int64_t)*size)); + auto arr = static_cast(malloc(size * sizeof(int64_t))); if (arr == nullptr) { LOG_ERROR("arr is nullptr"); *errcode = CJ_ERR_OUT_OF_MEMORY; diff --git a/calendarmanager/cj/src/cj_native_util.cpp b/calendarmanager/cj/src/cj_native_util.cpp index 262665c..92ca1d3 100644 --- a/calendarmanager/cj/src/cj_native_util.cpp +++ b/calendarmanager/cj/src/cj_native_util.cpp @@ -525,7 +525,7 @@ std::optional ResultSetToLocation(DataShareResultSetPtr &resultSet) std::stringstream str2digit; str2digit << value; str2digit >> longitudeValue; - if (longitudeValue != -1) { + if (longitudeValue != -1.0) { out.longitude = std::make_optional(longitudeValue); } ret = GetValue(resultSet, "location_latitude", value); @@ -533,7 +533,7 @@ std::optional ResultSetToLocation(DataShareResultSetPtr &resultSet) str2digit.clear(); str2digit << value; str2digit >> latitudeValue; - if (latitudeValue != -1) { + if (latitudeValue != -1.0) { out.latitude = std::make_optional(latitudeValue); } From aa42f3e961a3c367ad79526f676d11ffc3655c7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=9F=8E=E8=8C=B6=E8=AF=AD?= Date: Wed, 27 Aug 2025 16:04:29 +0800 Subject: [PATCH 02/12] fix code warning MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 小城茶语 --- calendarmanager/cj/include/cj_calendar.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/calendarmanager/cj/include/cj_calendar.h b/calendarmanager/cj/include/cj_calendar.h index c3a3782..2041b24 100644 --- a/calendarmanager/cj/include/cj_calendar.h +++ b/calendarmanager/cj/include/cj_calendar.h @@ -37,7 +37,7 @@ public: void CArrAttendeeFree(CArrAttendee cArrAttendee); void CRecurrenceRuleFree(CRecurrenceRule cRecurrenceRule); void CArrEventfree(CArrEvents arr); - CArrEvents VectorToCArrEvents(std::vector events, int32_t* errcode); + CArrEvents VectorToCArrEvents(std::vector &events, int32_t* errcode); RecurrenceRule BuildNativeRecurrenceRule(CRecurrenceRule recurrenceRule); CRecurrenceRule BuildCRecurrenceRule(RecurrenceRule nativeRecurrenceRule, int32_t* errcode); CLocation BuildCLocation(Location location); From 0c2023ea4c908b102382d41b6fcc1a2d020fd906 Mon Sep 17 00:00:00 2001 From: guorunzhi Date: Fri, 29 Aug 2025 10:34:46 +0800 Subject: [PATCH 03/12] fix code warning Signed-off-by: guorunzhi --- .../cj/include/calendar_manager_ffi.h | 1 + calendarmanager/cj/include/cj_calendar.h | 3 +- .../cj/include/cj_native_calendar.h | 10 +-- calendarmanager/cj/src/cj_calendar.cpp | 89 ++++++++++--------- calendarmanager/cj/src/cj_native_util.cpp | 6 +- 5 files changed, 60 insertions(+), 49 deletions(-) diff --git a/calendarmanager/cj/include/calendar_manager_ffi.h b/calendarmanager/cj/include/calendar_manager_ffi.h index 49d3269..c5a82a9 100644 --- a/calendarmanager/cj/include/calendar_manager_ffi.h +++ b/calendarmanager/cj/include/calendar_manager_ffi.h @@ -93,6 +93,7 @@ struct CCalendarConfig { int64_t color; }; +const int32_t CJ_OK = 0; const int32_t CJ_ERR_ILLEGAL_INSTANCE = -1; const int32_t CJ_ERR_OUT_OF_MEMORY = -2; const int32_t CJ_ERR_NULL_PTR = -3; diff --git a/calendarmanager/cj/include/cj_calendar.h b/calendarmanager/cj/include/cj_calendar.h index 2041b24..d0f20f3 100644 --- a/calendarmanager/cj/include/cj_calendar.h +++ b/calendarmanager/cj/include/cj_calendar.h @@ -37,7 +37,8 @@ public: void CArrAttendeeFree(CArrAttendee cArrAttendee); void CRecurrenceRuleFree(CRecurrenceRule cRecurrenceRule); void CArrEventfree(CArrEvents arr); - CArrEvents VectorToCArrEvents(std::vector &events, int32_t* errcode); + void EventToCArrEvent(CEvent& cevent, Event& event, int32_t* errcode); + CArrEvents VectorToCArrEvents(std::vector& events, int32_t* errcode); RecurrenceRule BuildNativeRecurrenceRule(CRecurrenceRule recurrenceRule); CRecurrenceRule BuildCRecurrenceRule(RecurrenceRule nativeRecurrenceRule, int32_t* errcode); CLocation BuildCLocation(Location location); diff --git a/calendarmanager/cj/include/cj_native_calendar.h b/calendarmanager/cj/include/cj_native_calendar.h index 82d540a..f351474 100644 --- a/calendarmanager/cj/include/cj_native_calendar.h +++ b/calendarmanager/cj/include/cj_native_calendar.h @@ -64,11 +64,11 @@ private: CalendarAccount m_account = {"", "", std::nullopt}; CalendarConfig m_config = {true, 0}; int m_id = 0; - std::unique_ptr m_eventUri = nullptr; - std::unique_ptr m_attendeeUri = nullptr; - std::unique_ptr m_calendarUri = nullptr; - std::unique_ptr m_reminderUrl = nullptr; - std::unique_ptr m_instanceUrl = nullptr; + std::unique_ptr m_eventUri; + std::unique_ptr m_attendeeUri; + std::unique_ptr m_calendarUri; + std::unique_ptr m_reminderUrl; + std::unique_ptr m_instanceUrl; }; } // namespace OHOS::Calendar #endif // NATIVE_CALENDAR_H \ No newline at end of file diff --git a/calendarmanager/cj/src/cj_calendar.cpp b/calendarmanager/cj/src/cj_calendar.cpp index 8d53ea2..c812083 100644 --- a/calendarmanager/cj/src/cj_calendar.cpp +++ b/calendarmanager/cj/src/cj_calendar.cpp @@ -65,7 +65,7 @@ namespace CalendarApi { return nullptr; } auto length = origin.length() + 1; - if (length == 0 || length > (SIZE_MAX * sizeof(int64_t))) { + if (length > (SIZE_MAX * sizeof(char))) { return nullptr; } char *res = static_cast(malloc(sizeof(char) * length)); @@ -156,7 +156,7 @@ namespace CalendarApi { { CArrAttendee arr = {}; arr.size = static_cast(attendees.size()); - if (arr.size == 0 || arr.size > (SIZE_MAX * sizeof(int64_t))) { + if (arr.size == 0 || arr.size > (SIZE_MAX * sizeof(CAttendee))) { LOG_ERROR("Invalid size for memory allocation"); *errcode = CJ_ERR_OUT_OF_MEMORY; return arr; @@ -301,9 +301,51 @@ namespace CalendarApi { } } + void CJCalendar::EventToCArrEvent(CEvent& cevent, Event& event, int32_t* errcode) + { + cevent.id = static_cast(event.id.value()); + cevent.type = event.type; + cevent.startTime = event.startTime; + cevent.endTime = event.endTime; + cevent.title = IMallocCString(event.title.value_or("")); + if (event.location.has_value()) { + cevent.location = BuildCLocation(event.location.value()); + } + cevent.isAllDay = event.isAllDay.value_or(false); + cevent.attendee = BuildCArrAttendee(event.attendees, errcode); + cevent.timeZone = IMallocCString(event.timeZone.value_or("")); + if (event.reminderTime.has_value() && event.reminderTime.value().size() > 0) { + vector reminderTime = event.reminderTime.value(); + cevent.reminderTime.size = static_cast(reminderTime.size()); + cevent.reminderTime.head = static_cast(malloc(sizeof(int64_t) * reminderTime.size())); + if (cevent.reminderTime.head == nullptr) { + *errcode = CJ_ERR_OUT_OF_MEMORY; + return; + } + for (int64_t j = 0; j < arr.head[i].reminderTime.size; j++) { + cevent.reminderTime.head[j] = static_cast(reminderTime[j]); + } + } + if (event.recurrenceRule.has_value()) { + cevent.recurrenceRule = BuildCRecurrenceRule(event.recurrenceRule.value(), errcode); + } + cevent.description = IMallocCString(event.description.value_or("")); + if (event.service.has_value()) { + cevent.service.type = IMallocCString(event.service.value().type); + cevent.service.uri = IMallocCString(event.service.value().uri); + cevent.service.description = IMallocCString(event.service.value().description.value_or("")); + } + cevent.identifier = IMallocCString(event.identifier.value_or("")); + cevent.isLunar = event.isLunar.value_or(false); + } + CArrEvents CJCalendar::VectorToCArrEvents(std::vector &events, int32_t* errcode) { CArrEvents arr = {}; + if (events.size() == 0 || events.size() > (SIZE_MAX * sizeof(CEvent))) { + LOG_ERROR("events.size() is error"); + return arr; + } arr.head = static_cast(malloc(sizeof(CEvent) * events.size())); if (arr.head == nullptr) { *errcode = CJ_ERR_OUT_OF_MEMORY; @@ -312,40 +354,11 @@ namespace CalendarApi { arr.size = static_cast(events.size()); for (size_t i = 0; i < events.size(); i++) { memset_s(&arr.head[i], sizeof(arr.head[i]), 0, sizeof(arr.head[i])); - arr.head[i].id = static_cast(events[i].id.value()); - arr.head[i].type = events[i].type; - arr.head[i].startTime = events[i].startTime; - arr.head[i].endTime = events[i].endTime; - arr.head[i].title = IMallocCString(events[i].title.value_or("")); - if (events[i].location.has_value()) { - arr.head[i].location = BuildCLocation(events[i].location.value()); + *errcode = EventToCArrEvent(arr.head[i], events[i]); + if (*errcode != CJ_OK) { + LOG_ERROR("Event To CArrEvent failed."); + return arr; } - arr.head[i].isAllDay = events[i].isAllDay.value_or(false); - arr.head[i].attendee = BuildCArrAttendee(events[i].attendees, errcode); - arr.head[i].timeZone = IMallocCString(events[i].timeZone.value_or("")); - if (events[i].reminderTime.has_value() && events[i].reminderTime.value().size() > 0) { - vector reminderTime = events[i].reminderTime.value(); - arr.head[i].reminderTime.size = static_cast(reminderTime.size()); - arr.head[i].reminderTime.head = static_cast(malloc(sizeof(int64_t) * reminderTime.size())); - if (arr.head[i].reminderTime.head == nullptr) { - *errcode = CJ_ERR_OUT_OF_MEMORY; - return arr; - } - for (int64_t j = 0; j < arr.head[i].reminderTime.size; j++) { - arr.head[i].reminderTime.head[j] = static_cast(reminderTime[j]); - } - } - if (events[i].recurrenceRule.has_value()) { - arr.head[i].recurrenceRule = BuildCRecurrenceRule(events[i].recurrenceRule.value(), errcode); - } - arr.head[i].description = IMallocCString(events[i].description.value_or("")); - if (events[i].service.has_value()) { - arr.head[i].service.type = IMallocCString(events[i].service.value().type); - arr.head[i].service.uri = IMallocCString(events[i].service.value().uri); - arr.head[i].service.description = IMallocCString(events[i].service.value().description.value_or("")); - } - arr.head[i].identifier = IMallocCString(events[i].identifier.value_or("")); - arr.head[i].isLunar = events[i].isLunar.value_or(false); } return arr; } @@ -461,11 +474,7 @@ namespace CalendarApi { return arr; } std::vector events = calendar_->GetEvents(eventFilter, keys); - if (events.size() == 0 || events.size() > (SIZE_MAX * sizeof(int64_t))) { - LOG_ERROR("events.size() is error"); - return arr; - } - arr = VectorToCArrEvents(&events, errcode); + arr = VectorToCArrEvents(events, errcode); if (*errcode != 0) { CArrEventfree(arr); } diff --git a/calendarmanager/cj/src/cj_native_util.cpp b/calendarmanager/cj/src/cj_native_util.cpp index 92ca1d3..5a5535a 100644 --- a/calendarmanager/cj/src/cj_native_util.cpp +++ b/calendarmanager/cj/src/cj_native_util.cpp @@ -521,11 +521,11 @@ std::optional ResultSetToLocation(DataShareResultSetPtr &resultSet) auto ret = GetValue(resultSet, "eventLocation", value); out.location = std::make_optional(value); ret = GetValue(resultSet, "location_longitude", value); - double longitudeValue = -1; + double longitudeValue = -1.0; std::stringstream str2digit; str2digit << value; str2digit >> longitudeValue; - if (longitudeValue != -1.0) { + if (isEqual(longitudeValue, -1.0)) { out.longitude = std::make_optional(longitudeValue); } ret = GetValue(resultSet, "location_latitude", value); @@ -533,7 +533,7 @@ std::optional ResultSetToLocation(DataShareResultSetPtr &resultSet) str2digit.clear(); str2digit << value; str2digit >> latitudeValue; - if (latitudeValue != -1.0) { + if (isEqual(longitudeValue, -1.0)) { out.latitude = std::make_optional(latitudeValue); } From 55f38d41cac1dbfb8d54f329b43acc35e3a7b540 Mon Sep 17 00:00:00 2001 From: guorunzhi Date: Fri, 29 Aug 2025 11:20:57 +0800 Subject: [PATCH 04/12] fix code warning Signed-off-by: guorunzhi --- calendarmanager/cj/src/cj_native_util.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/calendarmanager/cj/src/cj_native_util.cpp b/calendarmanager/cj/src/cj_native_util.cpp index 5a5535a..3023f16 100644 --- a/calendarmanager/cj/src/cj_native_util.cpp +++ b/calendarmanager/cj/src/cj_native_util.cpp @@ -18,6 +18,7 @@ #include "cj_native_util.h" #include #include +#include namespace OHOS::CalendarApi::Native { const int MIN_DAY_OF_WEEK = 1; @@ -529,11 +530,11 @@ std::optional ResultSetToLocation(DataShareResultSetPtr &resultSet) out.longitude = std::make_optional(longitudeValue); } ret = GetValue(resultSet, "location_latitude", value); - double latitudeValue = -1; + double latitudeValue = -1.0; str2digit.clear(); str2digit << value; str2digit >> latitudeValue; - if (isEqual(longitudeValue, -1.0)) { + if (isEqual(latitudeValue, -1.0)) { out.latitude = std::make_optional(latitudeValue); } From db2aeb14fd84fa5b740096b3436cfa3b7c9bafc3 Mon Sep 17 00:00:00 2001 From: guorunzhi Date: Fri, 29 Aug 2025 11:37:14 +0800 Subject: [PATCH 05/12] fix code warning Signed-off-by: guorunzhi --- calendarmanager/cj/src/cj_native_util.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/calendarmanager/cj/src/cj_native_util.cpp b/calendarmanager/cj/src/cj_native_util.cpp index 3023f16..dce3670 100644 --- a/calendarmanager/cj/src/cj_native_util.cpp +++ b/calendarmanager/cj/src/cj_native_util.cpp @@ -526,7 +526,7 @@ std::optional ResultSetToLocation(DataShareResultSetPtr &resultSet) std::stringstream str2digit; str2digit << value; str2digit >> longitudeValue; - if (isEqual(longitudeValue, -1.0)) { + if (std::fabs(longitudeValue + 1.0) < 1e-6) { out.longitude = std::make_optional(longitudeValue); } ret = GetValue(resultSet, "location_latitude", value); @@ -534,7 +534,7 @@ std::optional ResultSetToLocation(DataShareResultSetPtr &resultSet) str2digit.clear(); str2digit << value; str2digit >> latitudeValue; - if (isEqual(latitudeValue, -1.0)) { + if (std::fabs(latitudeValue + 1.0) < 1e-6) { out.latitude = std::make_optional(latitudeValue); } From 1368c0dc49a75db591c0715eaa7cbc3bc6412665 Mon Sep 17 00:00:00 2001 From: guorunzhi Date: Fri, 29 Aug 2025 11:56:02 +0800 Subject: [PATCH 06/12] fix code warning Signed-off-by: guorunzhi --- calendarmanager/cj/src/cj_calendar.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/calendarmanager/cj/src/cj_calendar.cpp b/calendarmanager/cj/src/cj_calendar.cpp index c812083..1a7d8e1 100644 --- a/calendarmanager/cj/src/cj_calendar.cpp +++ b/calendarmanager/cj/src/cj_calendar.cpp @@ -322,7 +322,7 @@ namespace CalendarApi { *errcode = CJ_ERR_OUT_OF_MEMORY; return; } - for (int64_t j = 0; j < arr.head[i].reminderTime.size; j++) { + for (int64_t j = 0; j < cevent.reminderTime.size; j++) { cevent.reminderTime.head[j] = static_cast(reminderTime[j]); } } From 6f294d8ab490c815259124ffcee0158a2944a94d Mon Sep 17 00:00:00 2001 From: guorunzhi Date: Fri, 29 Aug 2025 12:49:23 +0800 Subject: [PATCH 07/12] fix code warning Signed-off-by: guorunzhi --- calendarmanager/cj/src/cj_calendar.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/calendarmanager/cj/src/cj_calendar.cpp b/calendarmanager/cj/src/cj_calendar.cpp index 1a7d8e1..a653c2c 100644 --- a/calendarmanager/cj/src/cj_calendar.cpp +++ b/calendarmanager/cj/src/cj_calendar.cpp @@ -354,7 +354,7 @@ namespace CalendarApi { arr.size = static_cast(events.size()); for (size_t i = 0; i < events.size(); i++) { memset_s(&arr.head[i], sizeof(arr.head[i]), 0, sizeof(arr.head[i])); - *errcode = EventToCArrEvent(arr.head[i], events[i]); + *errcode = EventToCArrEvent(arr.head[i], events[i], errcode); if (*errcode != CJ_OK) { LOG_ERROR("Event To CArrEvent failed."); return arr; From d6f6284272b76c32feac88495b83b375e964bbb4 Mon Sep 17 00:00:00 2001 From: guorunzhi Date: Fri, 29 Aug 2025 14:08:56 +0800 Subject: [PATCH 08/12] fix code warning Signed-off-by: guorunzhi --- calendarmanager/cj/src/cj_calendar.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/calendarmanager/cj/src/cj_calendar.cpp b/calendarmanager/cj/src/cj_calendar.cpp index a653c2c..0dcce34 100644 --- a/calendarmanager/cj/src/cj_calendar.cpp +++ b/calendarmanager/cj/src/cj_calendar.cpp @@ -354,7 +354,7 @@ namespace CalendarApi { arr.size = static_cast(events.size()); for (size_t i = 0; i < events.size(); i++) { memset_s(&arr.head[i], sizeof(arr.head[i]), 0, sizeof(arr.head[i])); - *errcode = EventToCArrEvent(arr.head[i], events[i], errcode); + EventToCArrEvent(arr.head[i], events[i], errcode); if (*errcode != CJ_OK) { LOG_ERROR("Event To CArrEvent failed."); return arr; From 343006de7665cdb86a7eddca3cf6616ea50dce5d Mon Sep 17 00:00:00 2001 From: guorunzhi Date: Fri, 29 Aug 2025 17:45:07 +0800 Subject: [PATCH 09/12] fix code warning Signed-off-by: guorunzhi --- calendarmanager/cj/include/cj_calendar.h | 2 +- calendarmanager/cj/src/cj_calendar.cpp | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/calendarmanager/cj/include/cj_calendar.h b/calendarmanager/cj/include/cj_calendar.h index d0f20f3..e3e9bfe 100644 --- a/calendarmanager/cj/include/cj_calendar.h +++ b/calendarmanager/cj/include/cj_calendar.h @@ -37,7 +37,7 @@ public: void CArrAttendeeFree(CArrAttendee cArrAttendee); void CRecurrenceRuleFree(CRecurrenceRule cRecurrenceRule); void CArrEventfree(CArrEvents arr); - void EventToCArrEvent(CEvent& cevent, Event& event, int32_t* errcode); + int32_t EventToCArrEvent(CEvent& cevent, Event& event); CArrEvents VectorToCArrEvents(std::vector& events, int32_t* errcode); RecurrenceRule BuildNativeRecurrenceRule(CRecurrenceRule recurrenceRule); CRecurrenceRule BuildCRecurrenceRule(RecurrenceRule nativeRecurrenceRule, int32_t* errcode); diff --git a/calendarmanager/cj/src/cj_calendar.cpp b/calendarmanager/cj/src/cj_calendar.cpp index 0dcce34..ffda208 100644 --- a/calendarmanager/cj/src/cj_calendar.cpp +++ b/calendarmanager/cj/src/cj_calendar.cpp @@ -301,8 +301,9 @@ namespace CalendarApi { } } - void CJCalendar::EventToCArrEvent(CEvent& cevent, Event& event, int32_t* errcode) + int32_t CJCalendar::EventToCArrEvent(CEvent& cevent, Event& event) { + int32_t errcode = CJ_OK; cevent.id = static_cast(event.id.value()); cevent.type = event.type; cevent.startTime = event.startTime; @@ -319,8 +320,8 @@ namespace CalendarApi { cevent.reminderTime.size = static_cast(reminderTime.size()); cevent.reminderTime.head = static_cast(malloc(sizeof(int64_t) * reminderTime.size())); if (cevent.reminderTime.head == nullptr) { - *errcode = CJ_ERR_OUT_OF_MEMORY; - return; + errcode = CJ_ERR_OUT_OF_MEMORY; + return errcode; } for (int64_t j = 0; j < cevent.reminderTime.size; j++) { cevent.reminderTime.head[j] = static_cast(reminderTime[j]); @@ -337,6 +338,7 @@ namespace CalendarApi { } cevent.identifier = IMallocCString(event.identifier.value_or("")); cevent.isLunar = event.isLunar.value_or(false); + return errcode; } CArrEvents CJCalendar::VectorToCArrEvents(std::vector &events, int32_t* errcode) @@ -354,7 +356,7 @@ namespace CalendarApi { arr.size = static_cast(events.size()); for (size_t i = 0; i < events.size(); i++) { memset_s(&arr.head[i], sizeof(arr.head[i]), 0, sizeof(arr.head[i])); - EventToCArrEvent(arr.head[i], events[i], errcode); + *errcode = EventToCArrEvent(arr.head[i], events[i]); if (*errcode != CJ_OK) { LOG_ERROR("Event To CArrEvent failed."); return arr; From f2bf836697e7ed05c2dec5836faee9d4ef3a155e Mon Sep 17 00:00:00 2001 From: guorunzhi Date: Fri, 29 Aug 2025 17:56:15 +0800 Subject: [PATCH 10/12] fix code warning Signed-off-by: guorunzhi --- calendarmanager/cj/src/cj_calendar.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/calendarmanager/cj/src/cj_calendar.cpp b/calendarmanager/cj/src/cj_calendar.cpp index ffda208..7f5f365 100644 --- a/calendarmanager/cj/src/cj_calendar.cpp +++ b/calendarmanager/cj/src/cj_calendar.cpp @@ -318,6 +318,11 @@ namespace CalendarApi { if (event.reminderTime.has_value() && event.reminderTime.value().size() > 0) { vector reminderTime = event.reminderTime.value(); cevent.reminderTime.size = static_cast(reminderTime.size()); + if (reminderTime.size() == 0 || reminderTime.size() > (SIZE_MAX * sizeof(int64_t))) { + LOG_ERROR("reminderTime.size() is error"); + errcode = CJ_ERR_OUT_OF_MEMORY; + return errcode; + } cevent.reminderTime.head = static_cast(malloc(sizeof(int64_t) * reminderTime.size())); if (cevent.reminderTime.head == nullptr) { errcode = CJ_ERR_OUT_OF_MEMORY; From 617dba9c6261d86ed2573d1d091a02a146fd9779 Mon Sep 17 00:00:00 2001 From: guorunzhi Date: Fri, 29 Aug 2025 18:13:21 +0800 Subject: [PATCH 11/12] fix code warning Signed-off-by: guorunzhi --- calendarmanager/cj/src/cj_calendar.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/calendarmanager/cj/src/cj_calendar.cpp b/calendarmanager/cj/src/cj_calendar.cpp index 7f5f365..3613018 100644 --- a/calendarmanager/cj/src/cj_calendar.cpp +++ b/calendarmanager/cj/src/cj_calendar.cpp @@ -313,7 +313,7 @@ namespace CalendarApi { cevent.location = BuildCLocation(event.location.value()); } cevent.isAllDay = event.isAllDay.value_or(false); - cevent.attendee = BuildCArrAttendee(event.attendees, errcode); + cevent.attendee = BuildCArrAttendee(event.attendees, &errcode); cevent.timeZone = IMallocCString(event.timeZone.value_or("")); if (event.reminderTime.has_value() && event.reminderTime.value().size() > 0) { vector reminderTime = event.reminderTime.value(); @@ -333,7 +333,7 @@ namespace CalendarApi { } } if (event.recurrenceRule.has_value()) { - cevent.recurrenceRule = BuildCRecurrenceRule(event.recurrenceRule.value(), errcode); + cevent.recurrenceRule = BuildCRecurrenceRule(event.recurrenceRule.value(), &errcode); } cevent.description = IMallocCString(event.description.value_or("")); if (event.service.has_value()) { From 0128d587356c46932b6d66944708da360b66cefa Mon Sep 17 00:00:00 2001 From: guorunzhi Date: Sat, 30 Aug 2025 09:49:14 +0800 Subject: [PATCH 12/12] fix code warning Signed-off-by: guorunzhi --- calendarmanager/cj/src/cj_calendar.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/calendarmanager/cj/src/cj_calendar.cpp b/calendarmanager/cj/src/cj_calendar.cpp index 3613018..9d0ac32 100644 --- a/calendarmanager/cj/src/cj_calendar.cpp +++ b/calendarmanager/cj/src/cj_calendar.cpp @@ -320,13 +320,11 @@ namespace CalendarApi { cevent.reminderTime.size = static_cast(reminderTime.size()); if (reminderTime.size() == 0 || reminderTime.size() > (SIZE_MAX * sizeof(int64_t))) { LOG_ERROR("reminderTime.size() is error"); - errcode = CJ_ERR_OUT_OF_MEMORY; - return errcode; + return CJ_ERR_OUT_OF_MEMORY; } cevent.reminderTime.head = static_cast(malloc(sizeof(int64_t) * reminderTime.size())); if (cevent.reminderTime.head == nullptr) { - errcode = CJ_ERR_OUT_OF_MEMORY; - return errcode; + return CJ_ERR_OUT_OF_MEMORY; } for (int64_t j = 0; j < cevent.reminderTime.size; j++) { cevent.reminderTime.head[j] = static_cast(reminderTime[j]);