[esp32_ble_server] Validate descriptor write length before copying (#17626)

This commit is contained in:
Jonathan Swoboda
2026-07-16 15:32:44 -04:00
committed by GitHub
parent 09da2766ed
commit 6c8d0050ab
@@ -77,6 +77,10 @@ void BLEDescriptor::gatts_event_handler(esp_gatts_cb_event_t event, esp_gatt_if_
case ESP_GATTS_WRITE_EVT: { case ESP_GATTS_WRITE_EVT: {
if (this->handle_ != param->write.handle) if (this->handle_ != param->write.handle)
break; break;
if (param->write.len > this->value_.attr_max_len) {
ESP_LOGE(TAG, "Size %d too large, must be no bigger than %d", param->write.len, this->value_.attr_max_len);
break;
}
this->value_.attr_len = param->write.len; this->value_.attr_len = param->write.len;
memcpy(this->value_.attr_value, param->write.value, param->write.len); memcpy(this->value_.attr_value, param->write.value, param->write.len);
if (this->on_write_callback_) { if (this->on_write_callback_) {