extra tests for failure modes and remove CRYPTOCONDITION_OVERSIZE error state

This commit is contained in:
Scott Sadler
2018-02-19 18:24:12 -03:00
parent 456c9e72fd
commit f5cf215f71
7 changed files with 54 additions and 13 deletions

View File

@@ -949,11 +949,6 @@ bool EvalScript(vector<vector<unsigned char> >& stack, const CScript& script, un
valtype& vchFulfillment = stacktop(-2);
valtype& vchCondition = stacktop(-1);
// Hard limit fulfillment size
if (vchFulfillment.size() > 1024 * 10) {
return set_error(serror, SCRIPT_ERR_CRYPTOCONDITION_INVALID_FULFILLMENT);
}
CC *cond = (CC*) calloc(1, sizeof(CC));
char *fulfillmentBin = (char*) vchFulfillment.data();
int rc = cc_readFulfillmentBinary(cond, fulfillmentBin, vchFulfillment.size());

View File

@@ -67,6 +67,8 @@ const char* ScriptErrorString(const ScriptError serror)
return "NOPx reserved for soft-fork upgrades";
case SCRIPT_ERR_PUBKEYTYPE:
return "Public key is neither compressed or uncompressed";
case SCRIPT_ERR_CRYPTOCONDITION_INVALID_FULFILLMENT:
return "Crypto-Condition payload is invalid";
case SCRIPT_ERR_UNKNOWN_ERROR:
case SCRIPT_ERR_ERROR_COUNT:
default: break;

View File

@@ -54,6 +54,7 @@ typedef enum ScriptError_t
SCRIPT_ERR_ERROR_COUNT,
/* crypto-condition script errors */
SCRIPT_ERR_CRYPTOCONDITION_VERIFY,
SCRIPT_ERR_CRYPTOCONDITION_INVALID_FULFILLMENT
} ScriptError;