From 44f9e8507ae747768e51c74238e73aada9093fef Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Tue, 13 Jan 2026 17:12:03 -1000 Subject: [PATCH] safety --- esphome/components/api/api_connection.cpp | 4 ++-- esphome/components/event/event.h | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/esphome/components/api/api_connection.cpp b/esphome/components/api/api_connection.cpp index 64915468607..a2050ec6e5c 100644 --- a/esphome/components/api/api_connection.cpp +++ b/esphome/components/api/api_connection.cpp @@ -2076,8 +2076,8 @@ uint16_t APIConnection::dispatch_message_(const DeferredBatch::BatchItem &item, // Events need aux_data_index to look up event type from entity if (item.message_type == EventResponse::MESSAGE_TYPE) { auto *event = static_cast(item.entity); - return try_send_event_response(event, StringRef(event->get_event_type(item.aux_data_index)), this, remaining_size, - is_single); + return try_send_event_response(event, StringRef::from_maybe_nullptr(event->get_event_type(item.aux_data_index)), + this, remaining_size, is_single); } #endif diff --git a/esphome/components/event/event.h b/esphome/components/event/event.h index 23f9218c6a7..f77ad326d97 100644 --- a/esphome/components/event/event.h +++ b/esphome/components/event/event.h @@ -49,8 +49,10 @@ class Event : public EntityBase, public EntityBase_DeviceClass { /// Return the last triggered event type, or empty StringRef if no event triggered yet. StringRef get_last_event_type() const { return StringRef::from_maybe_nullptr(this->last_event_type_); } - /// Return event type by index. - const char *get_event_type(uint8_t index) const { return this->types_[index]; } + /// Return event type by index, or nullptr if index is out of bounds. + const char *get_event_type(uint8_t index) const { + return index < this->types_.size() ? this->types_[index] : nullptr; + } /// Return index of last triggered event type, or max uint8_t if no event triggered yet. uint8_t get_last_event_type_index() const {