aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLorenz Meier <lm@inf.ethz.ch>2015-01-19 14:07:18 +0100
committerLorenz Meier <lm@inf.ethz.ch>2015-01-21 08:58:47 +0100
commita9c8f2331b6cca3ca59debe82df82ace502170d8 (patch)
treec3dd8154c8b9ca1c2dcc1128db45c68032ba437b /src
parent859b34531473c9c78a4fee04de3cbdd147381913 (diff)
downloadpx4-firmware-a9c8f2331b6cca3ca59debe82df82ace502170d8.tar.gz
px4-firmware-a9c8f2331b6cca3ca59debe82df82ace502170d8.tar.bz2
px4-firmware-a9c8f2331b6cca3ca59debe82df82ace502170d8.zip
IO firmware: Make error checking more obvious
Diffstat (limited to 'src')
-rw-r--r--src/modules/px4iofirmware/controls.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/modules/px4iofirmware/controls.c b/src/modules/px4iofirmware/controls.c
index 58c9429b6..d20f776d6 100644
--- a/src/modules/px4iofirmware/controls.c
+++ b/src/modules/px4iofirmware/controls.c
@@ -454,6 +454,10 @@ ppm_input(uint16_t *values, uint16_t *num_values, uint16_t *frame_len)
{
bool result = false;
+ if (!(num_values) || !(values) || !(frame_len)) {
+ return result;
+ }
+
/* avoid racing with PPM updates */
irqstate_t state = irqsave();
@@ -468,7 +472,7 @@ ppm_input(uint16_t *values, uint16_t *num_values, uint16_t *frame_len)
if (*num_values > PX4IO_RC_INPUT_CHANNELS)
*num_values = PX4IO_RC_INPUT_CHANNELS;
- for (unsigned i = 0; i < *num_values; i++) {
+ for (unsigned i = 0; ((i < *num_values) && (i < PPM_MAX_CHANNELS)); i++) {
values[i] = ppm_buffer[i];
}
@@ -476,8 +480,7 @@ ppm_input(uint16_t *values, uint16_t *num_values, uint16_t *frame_len)
ppm_last_valid_decode = 0;
/* store PPM frame length */
- if (num_values)
- *frame_len = ppm_frame_length;
+ *frame_len = ppm_frame_length;
/* good if we got any channels */
result = (*num_values > 0);