add more sanity checks
This commit is contained in:
@@ -366,21 +366,27 @@ void NukiWrapper::onKeypadCommandReceived(const char *command, const uint &id, c
|
||||
}
|
||||
|
||||
bool idExists = std::find(_keypadCodeIds.begin(), _keypadCodeIds.end(), id) != _keypadCodeIds.end();
|
||||
int codeInt = code.toInt();
|
||||
NukiLock::CmdResult result = (NukiLock::CmdResult)-1;
|
||||
|
||||
if(strcmp(command, "add") == 0)
|
||||
{
|
||||
if(name == "")
|
||||
if(name == "" || name == "--")
|
||||
{
|
||||
_network->publishKeypadCommandResult("MissingParameterName");
|
||||
return;
|
||||
}
|
||||
if(codeInt == 0)
|
||||
{
|
||||
_network->publishKeypadCommandResult("MissingParameterCode");
|
||||
return;
|
||||
}
|
||||
|
||||
NukiLock::NewKeypadEntry entry;
|
||||
memset(&entry, 0, sizeof(entry));
|
||||
size_t nameLen = name.length();
|
||||
memcpy(&entry.name, name.c_str(), nameLen > 20 ? 20 : nameLen);
|
||||
entry.code = code.toInt();
|
||||
entry.code = codeInt;
|
||||
result = _nukiLock.addKeypadEntry(entry);
|
||||
Serial.print("Add keypad code: "); Serial.println((int)result);
|
||||
updateKeypad();
|
||||
@@ -398,11 +404,16 @@ void NukiWrapper::onKeypadCommandReceived(const char *command, const uint &id, c
|
||||
}
|
||||
else if(strcmp(command, "update") == 0)
|
||||
{
|
||||
if(name == "")
|
||||
if(name == "" || name == "--")
|
||||
{
|
||||
_network->publishKeypadCommandResult("MissingParameterName");
|
||||
return;
|
||||
}
|
||||
if(codeInt == 0)
|
||||
{
|
||||
_network->publishKeypadCommandResult("MissingParameterCode");
|
||||
return;
|
||||
}
|
||||
if(!idExists)
|
||||
{
|
||||
_network->publishKeypadCommandResult("UnknownId");
|
||||
@@ -414,7 +425,7 @@ void NukiWrapper::onKeypadCommandReceived(const char *command, const uint &id, c
|
||||
entry.codeId = id;
|
||||
size_t nameLen = name.length();
|
||||
memcpy(&entry.name, name.c_str(), nameLen > 20 ? 20 : nameLen);
|
||||
entry.code = code.toInt();
|
||||
entry.code = codeInt;
|
||||
entry.enabled = enabled == 0 ? 0 : 1;
|
||||
result = _nukiLock.updateKeypadEntry(entry);
|
||||
Serial.print("Update keypad code: "); Serial.println((int)result);
|
||||
|
||||
Reference in New Issue
Block a user