From d7400a4155997030b260d03b5794c9c052fe9cee Mon Sep 17 00:00:00 2001 From: john30 Date: Mon, 4 Dec 2017 09:08:56 +0100 Subject: [PATCH] fix for address check for -s/-d in read and write command (was never interpreted as destination address), allow master addresses for -d in write command --- src/ebusd/mainloop.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/ebusd/mainloop.cpp b/src/ebusd/mainloop.cpp index 7c9234bb..b24a05b6 100755 --- a/src/ebusd/mainloop.cpp +++ b/src/ebusd/mainloop.cpp @@ -713,16 +713,16 @@ result_t MainLoop::executeRead(const vector& args, const string& levels, } circuit = args[argPos]; } else if (args[argPos] == "-s" || args[argPos] == "-d") { + bool dest = args[argPos] == "-d"; argPos++; if (argPos >= args.size()) { argPos = 0; // print usage break; } - bool dest = args[argPos] == "-d"; result_t ret; symbol_t address = (symbol_t)parseInt(args[argPos].c_str(), 16, 0, 0xff, &ret); - if (ret != RESULT_OK || !isValidAddress(address, dest) || dest == isMaster(address)) { - return RESULT_ERR_INVALID_ADDR; + if (ret != RESULT_OK || !isValidAddress(address, dest) || (dest == isMaster(address))) { + return RESULT_ERR_INVALID_ADDR; // deny send from slave address and to master addresses } if (dest) { dstAddress = address; @@ -940,16 +940,16 @@ result_t MainLoop::executeWrite(const vector& args, const string levels, if (args[argPos] == "-h") { hex = true; } else if (args[argPos] == "-s" || args[argPos] == "-d") { + bool dest = args[argPos] == "-d"; argPos++; if (argPos >= args.size()) { argPos = 0; // print usage break; } - bool dest = args[argPos] == "-d"; result_t ret; symbol_t address = (symbol_t)parseInt(args[argPos].c_str(), 16, 0, 0xff, &ret); - if (ret != RESULT_OK || !isValidAddress(address, dest) || dest == isMaster(address)) { - return RESULT_ERR_INVALID_ADDR; + if (ret != RESULT_OK || !isValidAddress(address, dest) || (!dest && !isMaster(address))) { + return RESULT_ERR_INVALID_ADDR; // deny send from slave address } if (dest) { dstAddress = address;