diff --git a/automotive/vehicle/aidl/impl/vhal/src/DefaultVehicleHal.cpp b/automotive/vehicle/aidl/impl/vhal/src/DefaultVehicleHal.cpp index b191aef9b3..138aad5848 100644 --- a/automotive/vehicle/aidl/impl/vhal/src/DefaultVehicleHal.cpp +++ b/automotive/vehicle/aidl/impl/vhal/src/DefaultVehicleHal.cpp @@ -355,6 +355,9 @@ ScopedAStatus DefaultVehicleHal::getValues(const CallbackType& callback, ALOGE("getValues: failed to parse getValues requests"); return std::move(deserializedResults.error()); } + if (callback == nullptr) { + return ScopedAStatus::fromExceptionCode(EX_NULL_POINTER); + } const std::vector& getValueRequests = deserializedResults.value().getObject()->payloads; @@ -438,6 +441,9 @@ ScopedAStatus DefaultVehicleHal::setValues(const CallbackType& callback, ALOGE("setValues: failed to parse setValues requests"); return std::move(deserializedResults.error()); } + if (callback == nullptr) { + return ScopedAStatus::fromExceptionCode(EX_NULL_POINTER); + } const std::vector& setValueRequests = deserializedResults.value().getObject()->payloads; @@ -629,7 +635,9 @@ ScopedAStatus DefaultVehicleHal::subscribe(const CallbackType& callback, ALOGE("subscribe: invalid subscribe options: %s", getErrorMsg(result).c_str()); return toScopedAStatus(result); } - + if (callback == nullptr) { + return ScopedAStatus::fromExceptionCode(EX_NULL_POINTER); + } std::vector onChangeSubscriptions; std::vector continuousSubscriptions; for (const auto& option : options) { @@ -685,6 +693,9 @@ ScopedAStatus DefaultVehicleHal::subscribe(const CallbackType& callback, ScopedAStatus DefaultVehicleHal::unsubscribe(const CallbackType& callback, const std::vector& propIds) { + if (callback == nullptr) { + return ScopedAStatus::fromExceptionCode(EX_NULL_POINTER); + } return toScopedAStatus(mSubscriptionManager->unsubscribe(callback->asBinder().get(), propIds)); }