1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-19 22:35:23 +03:00

Merge pull request #1046 from martinbudden/bf_pwminit

Added bounds checking in pwmInit
This commit is contained in:
J Blackman 2016-08-21 17:17:20 +10:00 committed by GitHub
commit 923a0655b3

View file

@ -301,7 +301,10 @@ pwmOutputConfiguration_t *pwmInit(drv_pwm_config_t *init)
channelIndex++; channelIndex++;
#endif #endif
} else if (type == MAP_TO_MOTOR_OUTPUT) { } else if (type == MAP_TO_MOTOR_OUTPUT) {
// Check if we already configured maximum supported number of motors or output ports and skip the rest
if (pwmOutputConfiguration.motorCount >= MAX_MOTORS || pwmOutputConfiguration.outputCount >= MAX_PWM_OUTPUT_PORTS) {
continue;
}
#ifdef CC3D #ifdef CC3D
if (!(init->pwmProtocolType == PWM_TYPE_CONVENTIONAL)) { if (!(init->pwmProtocolType == PWM_TYPE_CONVENTIONAL)) {
// Skip it if it would cause PPM capture timer to be reconfigured or manually overflowed // Skip it if it would cause PPM capture timer to be reconfigured or manually overflowed
@ -331,6 +334,9 @@ pwmOutputConfiguration_t *pwmInit(drv_pwm_config_t *init)
pwmOutputConfiguration.outputCount++; pwmOutputConfiguration.outputCount++;
} else if (type == MAP_TO_SERVO_OUTPUT) { } else if (type == MAP_TO_SERVO_OUTPUT) {
#ifdef USE_SERVOS #ifdef USE_SERVOS
if (pwmOutputConfiguration.servoCount >= MAX_SERVOS || pwmOutputConfiguration.outputCount >= MAX_PWM_OUTPUT_PORTS) {
continue;
}
pwmOutputConfiguration.portConfigurations[pwmOutputConfiguration.outputCount].index = pwmOutputConfiguration.servoCount; pwmOutputConfiguration.portConfigurations[pwmOutputConfiguration.outputCount].index = pwmOutputConfiguration.servoCount;
pwmServoConfig(timerHardwarePtr, pwmOutputConfiguration.servoCount, init->servoPwmRate, init->servoCenterPulse); pwmServoConfig(timerHardwarePtr, pwmOutputConfiguration.servoCount, init->servoPwmRate, init->servoCenterPulse);
pwmOutputConfiguration.portConfigurations[pwmOutputConfiguration.outputCount].flags = PWM_PF_SERVO | PWM_PF_OUTPUT_PROTOCOL_PWM; pwmOutputConfiguration.portConfigurations[pwmOutputConfiguration.outputCount].flags = PWM_PF_SERVO | PWM_PF_OUTPUT_PROTOCOL_PWM;