diff --git a/services/miscdevice_service/src/miscdevice_service.cpp b/services/miscdevice_service/src/miscdevice_service.cpp index bfa2f35ed4c912fd25ce352739a2ee04b41794ce..000de6c0dec031cb550e93783d0a170e84610686 100644 --- a/services/miscdevice_service/src/miscdevice_service.cpp +++ b/services/miscdevice_service/src/miscdevice_service.cpp @@ -686,13 +686,20 @@ int32_t MiscdeviceService::PlayVibratorCustom(const VibratorIdentifierIPC& ident JsonParser parser(rawFd); VibratorDecoderCreator creator; std::unique_ptr decoder(creator.CreateDecoder(parser)); - CHKPR(decoder, ERROR); + if (decoder == nullptr) { + MISC_HILOGE("decoder is nullptr"); + close(rawFd.fd); + return ERROR; + } + VibratePackage package; int32_t ret = decoder->DecodeEffect(rawFd, parser, package); if (ret != SUCCESS || package.patterns.empty()) { + close(rawFd.fd); MISC_HILOGE("Decode effect error"); return ERROR; } + close(rawFd.fd); MergeVibratorParmeters(customHapticInfoIPC.parameter, package); package.Dump(); VibrateInfo info = {