extra tests for failure modes and remove CRYPTOCONDITION_OVERSIZE error state
This commit is contained in:
@@ -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());
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user