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;