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

This commit is contained in:
john30
2017-12-04 09:08:56 +01:00
parent 4c1aefbd6d
commit d7400a4155
+6 -6
View File
@@ -713,16 +713,16 @@ result_t MainLoop::executeRead(const vector<string>& 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<string>& 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;