diff --git a/libdmabufheap/src/dmabuf_alloc.c b/libdmabufheap/src/dmabuf_alloc.c index 63d34e430212549e0afbf9401718dc7d1fb7b842..02dec9d783b5d5e7c35d05b29d442b94e79afdc5 100644 --- a/libdmabufheap/src/dmabuf_alloc.c +++ b/libdmabufheap/src/dmabuf_alloc.c @@ -86,6 +86,10 @@ int DmabufHeapClose(unsigned int fd) int DmabufHeapBufferAlloc(unsigned int heapFd, DmabufHeapBuffer *buffer) { + if (buffer == NULL) { + HILOG_ERROR(LOG_CORE, "%{public}s: buffer is NULL!", __func__); + return -EINVAL; + } if (buffer->size == 0) { HILOG_ERROR(LOG_CORE, "alloc buffer size is wrong."); return -EINVAL; @@ -108,6 +112,10 @@ int DmabufHeapBufferAlloc(unsigned int heapFd, DmabufHeapBuffer *buffer) int DmabufHeapBufferFree(DmabufHeapBuffer *buffer) { + if (buffer == NULL) { + HILOG_ERROR(LOG_CORE, "%{public}s: buffer is NULL!", __func__); + return -EINVAL; + } memtrace((void *)buffer, buffer->size, "DmabufHeap", false); return close(buffer->fd); } diff --git a/libpurgeablemem/c/src/purgeable_mem_builder_c.c b/libpurgeablemem/c/src/purgeable_mem_builder_c.c index 73f479c9826f11a353d1bc2bce9d0a7748a27b90..d60f096c5dff27b77740e62fc9866d2dfd3f5d32 100644 --- a/libpurgeablemem/c/src/purgeable_mem_builder_c.c +++ b/libpurgeablemem/c/src/purgeable_mem_builder_c.c @@ -85,6 +85,10 @@ bool PurgMemBuilderAppendFunc(struct PurgMemBuilder *builder, PurgMemBuilderFunc /* build @data content from @builder */ bool PurgMemBuilderBuildAll(struct PurgMemBuilder *builder, void *data, size_t size) { + if (builder == NULL) { + PM_HILOG_ERROR_C(LOG_CORE, "%{public}s: builder is NULL!", __func__); + return false; + } if (!(builder->Build)) { PM_HILOG_ERROR_C(LOG_CORE, "builder has no Build(), %{public}s", builder->name); return true; @@ -111,6 +115,10 @@ bool PurgMemBuilderAppendBuilder(struct PurgMemBuilder *builder, struct PurgMemB /* append a guest builder @newcomer to @head */ static void AppendBuilder(struct PurgMemBuilder *head, struct PurgMemBuilder *newcomer) { + if (head == NULL) { + PM_HILOG_ERROR_C(LOG_CORE, "%{public}s: head is NULL!", __func__); + return; + } if (!head->nextBuilder) { head->nextBuilder = newcomer; return; diff --git a/libpurgeablemem/c/src/purgeable_mem_c.c b/libpurgeablemem/c/src/purgeable_mem_c.c index 3a333aa6111fbec7d54816ffc86e6e17042248bd..c9a46b623382a5c7e2cc36c3ac3c7fe5ee59040e 100644 --- a/libpurgeablemem/c/src/purgeable_mem_c.c +++ b/libpurgeablemem/c/src/purgeable_mem_c.c @@ -41,6 +41,10 @@ struct PurgMem { static inline void LogPurgMemInfo(struct PurgMem *obj) { + if (obj == NULL) { + PM_HILOG_ERROR_C(LOG_CORE, "%{public}s: obj is NULL!", __func__); + return; + } PM_HILOG_INFO_C(LOG_CORE, "purgMemObj(%{public}lx) dataPtr(%{public}lx) dataSizeInput(%{public}zu)" " builderPtr(%{public}lx) uxpt(%{public}lx)", (unsigned long)obj, (unsigned long)(obj->dataPtr), obj->dataSizeInput, diff --git a/libpurgeablemem/common/src/ux_page_table_c.c b/libpurgeablemem/common/src/ux_page_table_c.c index abde6f9c2f7ea320470ea1939815099e8c6eb713..f2822ad5345deb1490d8990e943e669124232ac7 100644 --- a/libpurgeablemem/common/src/ux_page_table_c.c +++ b/libpurgeablemem/common/src/ux_page_table_c.c @@ -182,6 +182,10 @@ PMState InitUxPageTable(UxPageTableStruct *upt, uint64_t addr, size_t len) HILOG_DEBUG(LOG_CORE, "%{public}s: not support uxpt", __func__); return PM_OK; } + if (upt == NULL) { + HILOG_ERROR(LOG_CORE, "%{public}s: upt is NULL!", __func__); + return PM_MMAP_UXPT_FAIL; + } upt->dataAddr = addr; upt->dataSize = len; upt->uxpte = MapUxptePages(upt->dataAddr, upt->dataSize); @@ -198,6 +202,10 @@ PMState DeinitUxPageTable(UxPageTableStruct *upt) HILOG_DEBUG(LOG_CORE, "%{public}s: not support uxpt", __func__); return PM_OK; } + if (upt == NULL) { + HILOG_ERROR(LOG_CORE, "%{public}s: upt is NULL!", __func__); + return PM_MMAP_UXPT_FAIL; + } size_t size = GetUxPageSize(upt->dataAddr, upt->dataSize); int unmapRet = 0; if (upt->uxpte) { @@ -304,6 +312,10 @@ static inline size_t GetIndexInUxpte(uint64_t startAddr, uint64_t currAddr) static void GetUxpteAt(UxPageTableStruct *upt, uint64_t addr) { + if (upt == NULL) { + HILOG_ERROR(LOG_CORE, "%{public}s: upt is NULL!", __func__); + return; + } size_t index = GetIndexInUxpte(upt->dataAddr, addr); UxpteAdd(&(upt->uxpte[index]), UXPTE_REFCNT_ONE); @@ -313,6 +325,10 @@ static void GetUxpteAt(UxPageTableStruct *upt, uint64_t addr) static void PutUxpteAt(UxPageTableStruct *upt, uint64_t addr) { + if (upt == NULL) { + HILOG_ERROR(LOG_CORE, "%{public}s: upt is NULL!", __func__); + return; + } size_t index = GetIndexInUxpte(upt->dataAddr, addr); UxpteSub(&(upt->uxpte[index]), UXPTE_REFCNT_ONE); @@ -322,6 +338,10 @@ static void PutUxpteAt(UxPageTableStruct *upt, uint64_t addr) static void ClearUxpteAt(UxPageTableStruct *upt, uint64_t addr) { + if (upt == NULL) { + HILOG_ERROR(LOG_CORE, "%{public}s: upt is NULL!", __func__); + return; + } size_t index = GetIndexInUxpte(upt->dataAddr, addr); UxpteClear_(&(upt->uxpte[index])); }