diff --git a/adapter/platform/i2c/i2c_bes.c b/adapter/platform/i2c/i2c_bes.c index cbb23a4afa7521cab49e137bf1ce006a2fd0a486..029ed23cf27599d183581d870262f43b48deda37 100755 --- a/adapter/platform/i2c/i2c_bes.c +++ b/adapter/platform/i2c/i2c_bes.c @@ -381,6 +381,9 @@ static int32_t i2c_transfer(struct I2cDevice *device, struct I2cMsg *msgs, int16 } } else if (msg->flags == I2C_FLAG_STOP) { i++; + if (i >= count) { + return i; + } msg2 = &msgs[i]; ret = hal_i2c_task_recv(i2cPort, msg->addr, msg->buf, msg->len, msg2->buf, msg2->len, 0, NULL); if (ret != 0) { diff --git a/adapter/uhdf2/ipc/src/hdf_sbuf_impl_hipc.cpp b/adapter/uhdf2/ipc/src/hdf_sbuf_impl_hipc.cpp index 413986057939ffe245c86afeda683b62922b0700..30b4f5134dde324c5ca860a2dd3ee4a2a5aaf8fc 100644 --- a/adapter/uhdf2/ipc/src/hdf_sbuf_impl_hipc.cpp +++ b/adapter/uhdf2/ipc/src/hdf_sbuf_impl_hipc.cpp @@ -407,13 +407,21 @@ extern "C" struct HdfSBufImpl *SbufBindIpc(uintptr_t base, size_t size) { struct SBufMParcelImpl *sbuf = new SBufMParcelImpl(new MessageParcel(new SbufAllocator())); sbuf->realParcel_->ParseFrom(base, size); - return &sbuf->infImpl; + struct HdfSBufImpl *ret = &sbuf->infImpl; + if (ret == nullptr) { + delete sbuf; + } + return ret; } // LCOV_EXCL_STOP struct HdfSBuf *ParcelToSbuf(OHOS::MessageParcel *parcel) { struct SBufMParcelImpl *sbuf = new SBufMParcelImpl(parcel, false); - return HdfSbufTypedObtainInplace(SBUF_IPC, &sbuf->infImpl); + struct HdfSBuf *ret = HdfSbufTypedObtainInplace(SBUF_IPC, &sbuf->infImpl); + if (ret == nullptr) { + delete sbuf; + } + return ret; } int32_t SbufToParcel(struct HdfSBuf *sbuf, OHOS::MessageParcel **parcel) diff --git a/framework/model/audio/common/src/audio_platform_base.c b/framework/model/audio/common/src/audio_platform_base.c index b16fe518e30cf3a4281e805c6503d0df29718133..3299ba38f457af4cad91a04afd928b6a09320940 100755 --- a/framework/model/audio/common/src/audio_platform_base.c +++ b/framework/model/audio/common/src/audio_platform_base.c @@ -503,6 +503,10 @@ static int32_t AudioMmapWriteTransfer(const struct AudioCard *card) uint32_t loopTimes; char *tmpBuf = NULL; + if (card == NULL) { + AUDIO_DRIVER_LOG_ERR("card is null."); + return HDF_FAILURE; + } struct PlatformData *data = PlatformDataFromCard(card); if (AudioRenderPlatformDataInit(data, &totalSize, &lastBuffSize, &loopTimes) == HDF_FAILURE) { return HDF_FAILURE; diff --git a/framework/model/audio/usb/src/audio_usb_parse_interface.c b/framework/model/audio/usb/src/audio_usb_parse_interface.c index 6527c7d03ed3efa43ea57c301e9c5762b7635360..6c75dc7d1d83600e1260d172b906fe367c5bda9b 100644 --- a/framework/model/audio/usb/src/audio_usb_parse_interface.c +++ b/framework/model/audio/usb/src/audio_usb_parse_interface.c @@ -772,6 +772,10 @@ static int32_t AudioUsbV1SetSampleRate(struct AudioUsbDriver *audioUsbDriver, in dev = interface_to_usbdev(audioUsbDriver->usbIf); inteDesc = AudioUsbGetIfaceDesc(alts); + if (inteDesc == NULL) { + AUDIO_DRIVER_LOG_ERR("inteDesc is NULL."); + return HDF_FAILURE; + } if (inteDesc->bNumEndpoints < 1) { return HDF_ERR_INVALID_PARAM; }