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:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user