From 7ba025dcd88e61b766aba18714cfb115f9a49b77 Mon Sep 17 00:00:00 2001 From: wangyikai Date: Wed, 10 Sep 2025 10:30:00 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90dsoftbus=E3=80=91=E5=88=86=E5=B8=83?= =?UTF-8?q?=E5=BC=8F=E8=BD=AF=E6=80=BB=E7=BA=BF=E6=97=A5=E5=BF=97=E7=BC=BA?= =?UTF-8?q?=E9=99=B7|=E3=80=90hdf=5Fcore=E3=80=91=E3=80=90fuzz=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E3=80=91meta=5F=E7=A9=BA=E6=8C=87=E9=92=88=E5=88=A4?= =?UTF-8?q?=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wangyikai --- .../misc/dsoftbus/src/softbus_lwip_monitor.c | 2 +- interfaces/inner_api/hdi/base/hdi_smq.h | 46 +++++++++++++++++++ 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/adapter/khdf/liteos/model/misc/dsoftbus/src/softbus_lwip_monitor.c b/adapter/khdf/liteos/model/misc/dsoftbus/src/softbus_lwip_monitor.c index 9330256d2..363d1e446 100644 --- a/adapter/khdf/liteos/model/misc/dsoftbus/src/softbus_lwip_monitor.c +++ b/adapter/khdf/liteos/model/misc/dsoftbus/src/softbus_lwip_monitor.c @@ -83,7 +83,7 @@ static void NetifStatusCallback(struct netif *netif, netif_nsc_reason_t reason, } dprintf("NetifStatusCallback(%s): nsc event: 0x%x\n", netif->full_name, (uint32_t)reason); if (strncpy_s(reportInfo.ifName, NETIF_NAME_LENGTH, netif->full_name, strlen(netif->full_name)) != EOK) { - dprintf("NetifStatusCallback(%s): copy netif full name fail: %s\n", netif->full_name); + dprintf("NetifStatusCallback(%s): copy netif full name fail.\n", netif->full_name); return; } switch (reason) { diff --git a/interfaces/inner_api/hdi/base/hdi_smq.h b/interfaces/inner_api/hdi/base/hdi_smq.h index fbe0573da..f96784ca2 100644 --- a/interfaces/inner_api/hdi/base/hdi_smq.h +++ b/interfaces/inner_api/hdi/base/hdi_smq.h @@ -278,6 +278,11 @@ SharedMemQueue::SharedMemQueue(uint32_t elementCount, SmqType type) } meta_ = std::make_shared>(elementCount, type); + if (meta_ == nullptr) { + HDF_LOGE("Create SharedMemQueueMeta failed, meta_ is nullptr"); + return; + } + HDF_LOGI("create SharedMemQueue, count=%{public}u, size=%{public}zu", elementCount, meta_->GetSize()); int ashmemFd = AshmemCreate("hdi_smq", Align(meta_->GetSize(), PAGE_SIZE)); if (ashmemFd < 0) { @@ -368,6 +373,11 @@ void SharedMemQueue::Init(bool resetWriteOffset) template uintptr_t SharedMemQueue::MapMemZone(uint32_t zoneType) { + if (meta_ == nullptr) { + HDF_LOGE("meta_ is nullptr, zoneType: %{public}u.", zoneType); + return reinterpret_cast(nullptr); + } + auto memzone = meta_->GetMemZone(zoneType); if (memzone == nullptr) { HDF_LOGE("invalid smq mem zone type %{public}u", zoneType); @@ -390,6 +400,10 @@ uintptr_t SharedMemQueue::MapMemZone(uint32_t zoneType) template void SharedMemQueue::UnMapMemZone(void *addr, uint32_t zoneType) { + if (meta_ == nullptr) { + HDF_LOGE("meta_ is nullptr, zoneType: %{public}u.", zoneType); + return; + } auto memzone = meta_->GetMemZone(zoneType); if (memzone == nullptr) { return; @@ -446,6 +460,10 @@ int SharedMemQueue::Read(T *data) template int SharedMemQueue::Write(const T *data, size_t count, int64_t waitTimeNanoSec) { + if (meta_ == nullptr) { + HDF_LOGE("Write, meta_ is nullptr, count: %{public}zu, waitTimeNanoSec: %{public}lld.", count, waitTimeNanoSec); + return HDF_ERR_INVALID_OBJECT; + } if (meta_->GetType() != SmqType::SYNCED_SMQ) { HDF_LOGE("unsynecd smq not support blocking write"); return HDF_ERR_NOT_SUPPORT; @@ -494,6 +512,10 @@ int SharedMemQueue::Write(const T *data, size_t count, int64_t waitTimeNanoSe template int SharedMemQueue::Reset() { + if (meta_ == nullptr) { + HDF_LOGE("meta_ is nullptr."); + return HDF_ERR_INVALID_OBJECT; + } // do not invoke this function in multi-thread in same side if (meta_->GetType() != SmqType::SYNCED_SMQ) { HDF_LOGW("unsynecd smq reset status"); @@ -517,6 +539,10 @@ int SharedMemQueue::Reset() template int SharedMemQueue::Read(T *data, size_t count, int64_t waitTimeNanoSec) { + if (meta_ == nullptr) { + HDF_LOGE("Read, meta_ is nullptr, count: %{public}zu, waitTimeNanoSec: %{public}lld.", count, waitTimeNanoSec); + return HDF_ERR_INVALID_OBJECT; + } if (meta_->GetType() != SmqType::SYNCED_SMQ) { HDF_LOGE("unsynecd smq not support blocking read"); return HDF_ERR_NOT_SUPPORT; @@ -576,6 +602,10 @@ int SharedMemQueue::ReadNonBlocking(T *data) template int SharedMemQueue::WriteNonBlocking(const T *data, size_t count) { + if (meta_ == nullptr) { + HDF_LOGE("meta_ is nullptr, count: %{public}zu.", count); + return HDF_ERR_INVALID_OBJECT; + } auto avalidWrite = GetAvalidWriteSize(); if (count > avalidWrite && meta_->GetType() == SmqType::SYNCED_SMQ) { // synced smq can not overflow write @@ -623,6 +653,10 @@ int SharedMemQueue::WriteNonBlocking(const T *data, size_t count) template int SharedMemQueue::ReadNonBlocking(T *data, size_t count) { + if (meta_ == nullptr) { + HDF_LOGE("meta_ is nullptr, count: %{public}zu.", count); + return HDF_ERR_INVALID_OBJECT; + } if (count == 0) { HDF_LOGE("Try to read zero data from smq!"); return -EINVAL; @@ -670,12 +704,20 @@ int SharedMemQueue::ReadNonBlocking(T *data, size_t count) template size_t SharedMemQueue::GetAvalidWriteSize() { + if (meta_ == nullptr) { + HDF_LOGE("GetAvalidWriteSize, meta_ is nullptr."); + return 0; + } return meta_->GetElementCount() - GetAvalidReadSize(); } template size_t SharedMemQueue::GetAvalidReadSize() { + if (meta_ == nullptr) { + HDF_LOGE("GetAvalidReadSize, meta_ is nullptr."); + return 0; + } auto wOffset = writeOffset_->load(std::memory_order_acquire); auto rOffset = readOffset_->load(std::memory_order_acquire); auto size = wOffset >= rOffset ? (wOffset - rOffset) : (wOffset + meta_->GetElementCount() + 1 - rOffset); @@ -685,6 +727,10 @@ size_t SharedMemQueue::GetAvalidReadSize() template size_t SharedMemQueue::GetSize() { + if (meta_ == nullptr) { + HDF_LOGE("GetSize, meta_ is nullptr."); + return 0; + } return meta_->GetSize(); } -- Gitee