From 75ddc578f3a7e32716bc59812a411e76d78e555f Mon Sep 17 00:00:00 2001 From: lixiang Date: Wed, 13 Sep 2023 15:00:22 +0800 Subject: [PATCH] Change-Id: I4fed2b082b09b46d7648e2c9eb86b8d44add5f07 Signed-off-by: lixiang Change-Id: I82471bea10c7d816ee42842da9021d866c3a6af1 --- libpurgeablemem/c/src/purgeable_mem_c.c | 4 ++++ libpurgeablemem/common/src/ux_page_table_c.c | 4 ++++ libpurgeablemem/cpp/src/purgeable_ashmem.cpp | 4 ++++ libpurgeablemem/cpp/src/purgeable_mem.cpp | 4 ++++ libpurgeablemem/cpp/src/purgeable_mem_base.cpp | 4 ++++ 5 files changed, 20 insertions(+) diff --git a/libpurgeablemem/c/src/purgeable_mem_c.c b/libpurgeablemem/c/src/purgeable_mem_c.c index 8671c73..a9dd887 100644 --- a/libpurgeablemem/c/src/purgeable_mem_c.c +++ b/libpurgeablemem/c/src/purgeable_mem_c.c @@ -49,6 +49,10 @@ static inline void LogPurgMemInfo_(struct PurgMem *obj) static inline size_t RoundUp(size_t val, size_t align) { + if (val + align < val || val + align < align) { + PM_HILOG_ERROR_C(LOG_CORE, "%{public}s: Addition overflow!", __func__); + return val; + } if (align == 0) { return val; } diff --git a/libpurgeablemem/common/src/ux_page_table_c.c b/libpurgeablemem/common/src/ux_page_table_c.c index de14c41..050ff24 100644 --- a/libpurgeablemem/common/src/ux_page_table_c.c +++ b/libpurgeablemem/common/src/ux_page_table_c.c @@ -92,6 +92,10 @@ static inline size_t GetUxPageSize_(uint64_t dataAddr, size_t dataSize) static inline uint64_t RoundUp(uint64_t val, size_t align) { + if (val + align < val || val + align < align) { + HILOG_ERROR(LOG_CORE, "%{public}s: Addition overflow!", __func__); + return val; + } if (align == 0) { return val; } diff --git a/libpurgeablemem/cpp/src/purgeable_ashmem.cpp b/libpurgeablemem/cpp/src/purgeable_ashmem.cpp index 70b438d..ee71057 100644 --- a/libpurgeablemem/cpp/src/purgeable_ashmem.cpp +++ b/libpurgeablemem/cpp/src/purgeable_ashmem.cpp @@ -32,6 +32,10 @@ namespace PurgeableMem { static inline size_t RoundUp(size_t val, size_t align) { + if (val + align < val || val + align < align) { + PM_HILOG_ERROR(LOG_CORE, "%{public}s: Addition overflow!", __func__); + return val; + } if (align == 0) { return val; } diff --git a/libpurgeablemem/cpp/src/purgeable_mem.cpp b/libpurgeablemem/cpp/src/purgeable_mem.cpp index 1ee83a0..7e25796 100644 --- a/libpurgeablemem/cpp/src/purgeable_mem.cpp +++ b/libpurgeablemem/cpp/src/purgeable_mem.cpp @@ -32,6 +32,10 @@ namespace PurgeableMem { static inline size_t RoundUp(size_t val, size_t align) { + if (val + align < val || val + align < align) { + PM_HILOG_ERROR(LOG_CORE, "%{public}s: Addition overflow!", __func__); + return val; + } if (align == 0) { return val; } diff --git a/libpurgeablemem/cpp/src/purgeable_mem_base.cpp b/libpurgeablemem/cpp/src/purgeable_mem_base.cpp index 8b4fe8e..779651a 100644 --- a/libpurgeablemem/cpp/src/purgeable_mem_base.cpp +++ b/libpurgeablemem/cpp/src/purgeable_mem_base.cpp @@ -33,6 +33,10 @@ const int MAX_BUILD_TRYTIMES = 3; static inline size_t RoundUp(size_t val, size_t align) { + if (val + align < val || val + align < align) { + PM_HILOG_ERROR(LOG_CORE, "%{public}s: Addition overflow!", __func__); + return val; + } if (align == 0) { return val; } -- Gitee