Browse Source

Check for unknown Qortal-only AT function codes & add safety to AT running in general

pull/67/head
catbref 4 years ago
parent
commit
2c14a12464
  1. 6
      src/main/java/org/qortal/at/AT.java
  2. 3
      src/main/java/org/qortal/at/QortalATAPI.java

6
src/main/java/org/qortal/at/AT.java

@ -100,7 +100,11 @@ public class AT {
// [Re]create AT machine state using AT state data or from scratch as applicable
MachineState state = MachineState.fromBytes(api, loggerFactory, latestAtStateData.getStateData(), codeBytes);
state.execute();
try {
state.execute();
} catch (Exception e) {
throw new DataException(String.format("Uncaught exception while running AT '%s'", atAddress), e);
}
long creation = this.atData.getCreation();
byte[] stateData = state.toBytes();

3
src/main/java/org/qortal/at/QortalATAPI.java

@ -449,6 +449,9 @@ public class QortalATAPI extends API {
public void platformSpecificPostCheckExecute(FunctionData functionData, MachineState state, short rawFunctionCode) throws ExecutionException {
QortalFunctionCode qortalFunctionCode = QortalFunctionCode.valueOf(rawFunctionCode);
if (qortalFunctionCode == null)
throw new IllegalFunctionCodeException("Unknown Qortal function code 0x" + String.format("%04x", rawFunctionCode) + " encountered");
qortalFunctionCode.execute(functionData, state, rawFunctionCode);
}

Loading…
Cancel
Save