From ae7a8893895e7bcc3a952f119cb195ac7e7fb648 Mon Sep 17 00:00:00 2001 From: Patrick Fallberg Date: Wed, 16 Dec 2015 09:47:05 +0100 Subject: [PATCH] Prevent SecureActuator from accepting ACKs as commands As ACKs are not currently signed, allowing ACKs as commands is a considerable security hole for this sketch. This is now resolved. --- libraries/MySensors/examples/SecureActuator/SecureActuator.ino | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libraries/MySensors/examples/SecureActuator/SecureActuator.ino b/libraries/MySensors/examples/SecureActuator/SecureActuator.ino index cb69354..7399c01 100644 --- a/libraries/MySensors/examples/SecureActuator/SecureActuator.ino +++ b/libraries/MySensors/examples/SecureActuator/SecureActuator.ino @@ -102,7 +102,8 @@ void loop() void incomingMessage(const MyMessage &message) { // We only expect one type of message from controller. But we better check anyway. - if (message.type==V_LOCK_STATUS && message.sensor<=NOF_LOCKS) { + // And acks are not accepted as control messages + if (message.type==V_LOCK_STATUS && message.sensor<=NOF_LOCKS && !mGetAck(message)) { // Change relay state digitalWrite(message.sensor-1+LOCK_1, message.getBool()?LOCK_LOCK:LOCK_UNLOCK); // Store state in eeprom