From 2ee9e837bb7d560dbadccb645264ff9fb12038e4 Mon Sep 17 00:00:00 2001 From: Matthew Kennedy Date: Mon, 21 Sep 2020 02:37:51 -0700 Subject: [PATCH] guard against ADC buffer overrun (#1812) --- firmware/hw_layer/adc/adc_inputs.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/firmware/hw_layer/adc/adc_inputs.cpp b/firmware/hw_layer/adc/adc_inputs.cpp index 5905a812f5..96f2323eec 100644 --- a/firmware/hw_layer/adc/adc_inputs.cpp +++ b/firmware/hw_layer/adc/adc_inputs.cpp @@ -346,6 +346,11 @@ bool AdcDevice::isHwUsed(adc_channel_e hwChannelIndex) const { } void AdcDevice::enableChannel(adc_channel_e hwChannel) { + if (channelCount >= efi::size(values.adc_data)) { + firmwareError(OBD_PCM_Processor_Fault, "Too many ADC channels configured"); + return; + } + int logicChannel = channelCount++; size_t channelAdcIndex = hwChannel - 1;