Index: firmware/App/Controllers/Valves.c =================================================================== diff -u -rf05acb2d013aa3dec1b59d793b8876aed928b5aa -r87d705fcf977af12b7b034735fa5867f2daea2b9 --- firmware/App/Controllers/Valves.c (.../Valves.c) (revision f05acb2d013aa3dec1b59d793b8876aed928b5aa) +++ firmware/App/Controllers/Valves.c (.../Valves.c) (revision 87d705fcf977af12b7b034735fa5867f2daea2b9) @@ -609,12 +609,16 @@ // Verify tester has logged in with TD if ( TRUE == isTestingActivated() ) { - VALVE_PINCH_SET_CMD_PAYLOAD_T payload; - - memcpy( &payload, message->payload, sizeof(VALVE_PINCH_SET_CMD_PAYLOAD_T) ); - if ( ( (VALVE_T)payload.valve < NUM_OF_VALVES ) && ( (VALVE_POSITION_T)payload.pos < NUM_OF_VALVE_POSITIONS ) ) + // Verify payload length is valid + if ( sizeof( VALVE_PINCH_SET_CMD_PAYLOAD_T ) == message->hdr.payloadLen ) { - result = setValvePosition( (VALVE_T)payload.valve, (VALVE_POSITION_T)payload.pos ); + VALVE_PINCH_SET_CMD_PAYLOAD_T payload; + + memcpy( &payload, message->payload, sizeof(VALVE_PINCH_SET_CMD_PAYLOAD_T) ); + if ( ( (VALVE_T)payload.valve < NUM_OF_VALVES ) && ( (VALVE_POSITION_T)payload.pos < NUM_OF_VALVE_POSITIONS ) ) + { + result = setValvePosition( (VALVE_T)payload.valve, (VALVE_POSITION_T)payload.pos ); + } } } @@ -637,12 +641,16 @@ // Verify tester has logged in with TD if ( TRUE == isTestingActivated() ) { - VALVE_PINCH_HOME_CMD_PAYLOAD_T payload; - - memcpy( &payload, message->payload, sizeof(VALVE_PINCH_HOME_CMD_PAYLOAD_T) ); - if ( (VALVE_T)payload.valve < NUM_OF_VALVES ) + // Verify payload length is valid + if ( sizeof( VALVE_PINCH_HOME_CMD_PAYLOAD_T ) == message->hdr.payloadLen ) { - result = homeValve( (VALVE_T)payload.valve, payload.force, payload.tubing ); + VALVE_PINCH_HOME_CMD_PAYLOAD_T payload; + + memcpy( &payload, message->payload, sizeof(VALVE_PINCH_HOME_CMD_PAYLOAD_T) ); + if ( (VALVE_T)payload.valve < NUM_OF_VALVES ) + { + result = homeValve( (VALVE_T)payload.valve, payload.force, payload.tubing ); + } } }