diff --git a/src/ripple/app/tx/applyHook.h b/src/ripple/app/tx/applyHook.h index 0aff53799..c0680086b 100644 --- a/src/ripple/app/tx/applyHook.h +++ b/src/ripple/app/tx/applyHook.h @@ -125,7 +125,65 @@ namespace hook OVERRIDE_MISSING = 23, // HookSet object was trying to update or delete a hook but lacked hsfOVERRIDE FLAGS_INVALID = 24, // HookSet flags were invalid for specified operation NSDELETE_FIELD = 25, - NSDELETE_FLAGS = 26 + NSDELETE_FLAGS = 26, + WASM_TOO_SMALL = 27, + WASM_BAD_MAGIC = 28, // wasm magic number missing or not wasm + WASM_PARSE_LOOP = 29, // wasm section parsing resulted in an infinite loop + IMPORTS_MISSING = 30, // hook must import guard, and accept/rollback + IMPORT_MODULE_BAD = 31, // hook attempted to specify no or a bad import module + IMPORT_MODULE_ENV = 32, // hook attempted to specify import module not named env + IMPORT_NAME_BAD = 33, // import name was too short or too long + IMPORT_ILLEGAL = 34, // attempted import of a non-whitelisted function + GUARD_IMPORT = 35, // guard import is missing + EXPORTS_MISSING = 36, // hook did not export *any* functions (should be cbak, hook) + EXPORT_HOOK_FUNC = 37, // hook did not export correct func def int64_t hook(uint32_t) + EXPORT_CBAK_FUNC = 38, // hook did not export correct func def int64_t cbak(uint32_t) + EXPORT_MISSING = 39, // distinct from export*S*_missing, either hook or cbak is missing + FUNCS_MISSING = 40, // hook did not include function code for any functions + FUNC_TYPELESS = 41, // hook defined hook/cbak but their type is not defined in wasm + FUNC_TYPE_INVALID = 42, // malformed and illegal wasm in the func type section + FUNC_PARAM_INVALID = 43, // parameter types may only be i32 i64 u32 u64 + PARAM_HOOK_CBAK = 44, // hook and cbak must take exactly one u32 parameter + FUNC_RETURN_COUNT = 45, // a function type is defined in the wasm which returns > 1 return value + FUNC_RETURN_INVALID = 46, // a function type does not return i32 i64 u32 or u64 + RETURN_HOOK_CBAK = 47, // hook and cbak must retunr i64 + TYPE_INVALID = 48, // malformed and illegal wasm specifying an illegal local var type + WASM_SMOKE_TEST = 49, // Informational: first attempt to load wasm into wasm runtime + WASM_TEST_FAILURE = 50, // the smoke test failed + HOOK_DEF_MISSING = 51, // attempt to reference a hook definition (by hash) that is not on ledger + AMENDMENT_DISABLED = 52, // attempt to HookSet when amendment is not yet enabled. + HOOKS_ARRAY_MISSING = 53, // attempt to HookSet without a Hooks array + HOOKS_ARRAY_EMPTY = 54, // attempt to HookSet with an empty Hooks array + HOOKS_ARRAY_TOO_BIG = 55, // attempt to HookSet with a Hooks array beyond the chain size limit + HOOKS_ARRAY_BAD = 56, // attempt to HookSet with a Hooks array containing a non-Hook obj + HOOK_INVALID_FIELD = 57, // HookSetObj contained an illegal/unexpected field + WASM_VALIDATION = 58, // a generic error while parsing wasm, usually leb128 overflow + HOOKS_ARRAY_BLANK = 59, // all hook set objs were blank + NSDELETE = 60, // Informational: a namespace is being deleted + NSDELETE_ACCOUNT = 61, // nsdelete tried to delete ns from a non-existing account + NSDELETE_DIRECTORY = 62, // nsdelete operation failed to delete ns directory + NSDELETE_DIR_ENTRY = 63, // nsdelete operation failed due to bad entry in ns directory + NSDELETE_NONSTATE = 64, // nsdelete operation failed due to the presence of a non-hookstate obj + NSDELETE_ENTRY = 65, // nsdelete operation failed due to missing hook state entry + NSDELETE_DIR = 66, // could not delete directory node in ledger + NSDELETE_COUNT = 67, // namespace state count less than 0 / overflow + HOOK_PARAMS_COUNT = 68, // hookset obj would create too many hook parameters + HOOK_PARAM_SIZE = 69, // hookset obj sets a parameter or value that exceeds max allowable size + NSDELETE_NOTHING = 70, // hsfNSDELETE provided but nothing to delete + DELETE_FLAG = 71, // delete operation requires hsfOVERRIDE flag + DELETE_NOTHING = 72, // delete operation would delete nothing + CREATE_FLAG = 73, // create operation requires hsfOVERRIDE flag + WASM_TOO_BIG = 74, // set hook would exceed maximum hook size + WASM_INVALID = 75, // set hook operation would set invalid wasm + INSTALL_FLAG = 76, // install operation requires hsoOVERRIDE + INSTALL_MISSING = 77, // install operation specifies hookhash which doesn't exist on the ledger + OPERATION_INVALID = 78 // could not deduce an operation from the provided hookset obj + + + + + + //RH UPTO }; diff --git a/src/ripple/app/tx/impl/SetHook.cpp b/src/ripple/app/tx/impl/SetHook.cpp index 561950ed2..91a42c70f 100644 --- a/src/ripple/app/tx/impl/SetHook.cpp +++ b/src/ripple/app/tx/impl/SetHook.cpp @@ -626,7 +626,7 @@ validateCreateCode(SetHookCtx& ctx, STObject const& hookSetObj) if (byteCount < 10) { JLOG(ctx.j.trace()) - << "HookSet[" << HS_ACC() << "]: " + << "HookSet(" << hook::log::WASM_TOO_SMALL << ")[" << HS_ACC() << "]: " << "Malformed transaction: Hook was not valid webassembly binary. Too small."; return {false, 0}; } @@ -638,7 +638,7 @@ validateCreateCode(SetHookCtx& ctx, STObject const& hookSetObj) if (hook[i] != header[i]) { JLOG(ctx.j.trace()) - << "HookSet[" << HS_ACC() << "]: " + << "HookSet(" << hook::log::WASM_BAD_MAGIC << ")[" << HS_ACC() << "]: " << "Malformed transaction: Hook was not valid webassembly binary. " << "Missing magic number or version."; return {false, 0}; @@ -667,7 +667,8 @@ validateCreateCode(SetHookCtx& ctx, STObject const& hookSetObj) // if the loop iterates twice with the same value for i then // it's an infinite loop edge case JLOG(ctx.j.trace()) - << "HookSet[" << HS_ACC() << "]: Malformed transaction: Hook is invalid WASM binary."; + << "HookSet(" << hook::log::WASM_PARSE_LOOP << ")[" << HS_ACC() + << "]: Malformed transaction: Hook is invalid WASM binary."; return {false, 0}; } @@ -691,9 +692,9 @@ validateCreateCode(SetHookCtx& ctx, STObject const& hookSetObj) if (import_count <= 0) { JLOG(ctx.j.trace()) - << "HookSet[" << HS_ACC() << "]: Malformed transaction. " + << "HookSet(" << hook::log::IMPORTS_MISSING << ")[" << HS_ACC() << "]: Malformed transaction. " << "Hook did not import any functions... " - << "required at least guard(uint32_t, uint32_t) and accept, reject or rollback"; + << "required at least guard(uint32_t, uint32_t) and accept or rollback"; return {false, 0}; } @@ -706,7 +707,7 @@ validateCreateCode(SetHookCtx& ctx, STObject const& hookSetObj) if (mod_length < 1 || mod_length > (hook.size() - i)) { JLOG(ctx.j.trace()) - << "HookSet[" << HS_ACC() << "]: Malformed transaction. " + << "HookSet(" << hook::log::IMPORT_MODULE_BAD << ")[" << HS_ACC() << "]: Malformed transaction. " << "Hook attempted to specify nil or invalid import module"; return {false, 0}; } @@ -714,7 +715,7 @@ validateCreateCode(SetHookCtx& ctx, STObject const& hookSetObj) if (std::string_view( (const char*)(hook.data() + i), (size_t)mod_length ) != "env") { JLOG(ctx.j.trace()) - << "HookSet[" << HS_ACC() << "]: Malformed transaction. " + << "HookSet(" << hook::log::IMPORT_MODULE_ENV << ")[" << HS_ACC() << "]: Malformed transaction. " << "Hook attempted to specify import module other than 'env'"; return {false, 0}; } @@ -726,7 +727,8 @@ validateCreateCode(SetHookCtx& ctx, STObject const& hookSetObj) if (name_length < 1 || name_length > (hook.size() - i)) { JLOG(ctx.j.trace()) - << "HookSet[" << HS_ACC() << "]: Malformed transaction. " + << "HookSet(" << hook::log::IMPORT_NAME_BAD << ")[" + << HS_ACC() << "]: Malformed transaction. " << "Hook attempted to specify nil or invalid import name"; return {false, 0}; } @@ -757,7 +759,8 @@ validateCreateCode(SetHookCtx& ctx, STObject const& hookSetObj) } else if (hook_api::import_whitelist.find(import_name) == hook_api::import_whitelist.end()) { JLOG(ctx.j.trace()) - << "HookSet[" << HS_ACC() << "]: Malformed transaction. " + << "HookSet(" << hook::log::IMPORT_ILLEGAL << ")[" + << HS_ACC() << "]: Malformed transaction. " << "Hook attempted to import a function that does not " << "appear in the hook_api function set: `" << import_name << "`"; return {false, 0}; @@ -768,7 +771,7 @@ validateCreateCode(SetHookCtx& ctx, STObject const& hookSetObj) if (guard_import_number == -1) { JLOG(ctx.j.trace()) - << "HookSet[" << HS_ACC() << "]: Malformed transaction. " + << "HookSet(" << hook::log::GUARD_IMPORT << ")[" << HS_ACC() << "]: Malformed transaction. " << "Hook did not import _g (guard) function"; return {false, 0}; } @@ -789,7 +792,8 @@ validateCreateCode(SetHookCtx& ctx, STObject const& hookSetObj) if (export_count <= 0) { JLOG(ctx.j.trace()) - << "HookSet[" << HS_ACC() << "]: Malformed transaction. " + << "HookSet(" << hook::log::EXPORTS_MISSING << ")[" + << HS_ACC() << "]: Malformed transaction. " << "Hook did not export any functions... " << "required hook(int64_t), callback(int64_t)."; return {false, 0}; @@ -807,7 +811,8 @@ validateCreateCode(SetHookCtx& ctx, STObject const& hookSetObj) if (hook[i] != 0) { JLOG(ctx.j.trace()) - << "HookSet[" << HS_ACC() << "]: Malformed transaction. " + << "HookSet(" << hook::log::EXPORT_HOOK_FUNC << ")[" + << HS_ACC() << "]: Malformed transaction. " << "Hook did not export: A valid int64_t hook(uint32_t)"; return {false, 0}; } @@ -823,7 +828,8 @@ validateCreateCode(SetHookCtx& ctx, STObject const& hookSetObj) if (hook[i] != 0) { JLOG(ctx.j.trace()) - << "HookSet[" << HS_ACC() << "]: Malformed transaction. " + << "HookSet(" << hook::log::EXPORT_CBAK_FUNC << ")[" + << HS_ACC() << "]: Malformed transaction. " << "Hook did not export: A valid int64_t cbak(uint32_t)"; return {false, 0}; } @@ -841,7 +847,8 @@ validateCreateCode(SetHookCtx& ctx, STObject const& hookSetObj) if (!(hook_func_idx && cbak_func_idx)) { JLOG(ctx.j.trace()) - << "HookSet[" << HS_ACC() << "]: Malformed transaction. " + << "HookSet(" << hook::log::EXPORT_MISSING << ")[" + << HS_ACC() << "]: Malformed transaction. " << "Hook did not export: " << ( !hook_func_idx ? "int64_t hook(uint32_t); " : "" ) << ( !cbak_func_idx ? "int64_t cbak(uint32_t);" : "" ); @@ -854,7 +861,8 @@ validateCreateCode(SetHookCtx& ctx, STObject const& hookSetObj) if (function_count <= 0) { JLOG(ctx.j.trace()) - << "HookSet[" << HS_ACC() << "]: Malformed transaction. " + << "HookSet(" << hook::log::FUNCS_MISSING + << ")[" << HS_ACC() << "]: Malformed transaction. " << "Hook did not establish any functions... " << "required hook(int64_t), callback(int64_t)."; return {false, 0}; @@ -882,7 +890,8 @@ validateCreateCode(SetHookCtx& ctx, STObject const& hookSetObj) func_type_map.find(*cbak_func_idx) == func_type_map.end()) { JLOG(ctx.j.trace()) - << "HookSet[" << HS_ACC() << "]: Malformed transaction. " + << "HookSet(" << hook::log::FUNC_TYPELESS << ")[" + << HS_ACC() << "]: Malformed transaction. " << "hook or cbak functions did not have a corresponding type in WASM binary."; return {false, 0}; } @@ -909,7 +918,8 @@ validateCreateCode(SetHookCtx& ctx, STObject const& hookSetObj) if (hook[i++] != 0x60) { JLOG(ctx.j.trace()) - << "HookSet[" << HS_ACC() << "]: Invalid function type. " + << "HookSet(" << hook::log::FUNC_TYPE_INVALID << ")[" + << HS_ACC() << "]: Invalid function type. " << "Codesec: " << section_type << " " << "Local: " << j << " " << "Offset: " << i; @@ -929,7 +939,8 @@ validateCreateCode(SetHookCtx& ctx, STObject const& hookSetObj) else { JLOG(ctx.j.trace()) - << "HookSet[" << HS_ACC() << "]: Invalid parameter type in function type. " + << "HookSet(" << hook::log::FUNC_PARAM_INVALID << ")[" + << HS_ACC() << "]: Invalid parameter type in function type. " << "Codesec: " << section_type << " " << "Local: " << j << " " << "Offset: " << i; @@ -945,7 +956,8 @@ validateCreateCode(SetHookCtx& ctx, STObject const& hookSetObj) (param_count != 1 || param_type != 0x7F /* i32 */ )) { JLOG(ctx.j.trace()) - << "HookSet[" << HS_ACC() << "]: Malformed transaction. " + << "HookSet(" << hook::log::PARAM_HOOK_CBAK << ")[" + << HS_ACC() << "]: Malformed transaction. " << "hook and cbak function definition must have exactly one uint32_t parameter."; return {false, 0}; } @@ -958,7 +970,8 @@ validateCreateCode(SetHookCtx& ctx, STObject const& hookSetObj) if (0 && result_count != 1) { JLOG(ctx.j.trace()) - << "HookSet[" << HS_ACC() << "]: Malformed transaction. " + << "HookSet(" << hook::log::FUNC_RETURN_COUNT << ")[" + << HS_ACC() << "]: Malformed transaction. " << "Hook declares a function type that returns fewer or more than one value."; return {false, 0}; } @@ -976,7 +989,8 @@ validateCreateCode(SetHookCtx& ctx, STObject const& hookSetObj) else { JLOG(ctx.j.trace()) - << "HookSet[" << HS_ACC() << "]: Invalid return type in function type. " + << "HookSet(" << hook::log::FUNC_RETURN_INVALID << ")[" + << HS_ACC() << "]: Invalid return type in function type. " << "Codesec: " << section_type << " " << "Local: " << j << " " << "Offset: " << i; @@ -992,7 +1006,8 @@ validateCreateCode(SetHookCtx& ctx, STObject const& hookSetObj) (result_count != 1 || result_type != 0x7E /* i64 */ )) { JLOG(ctx.j.trace()) - << "HookSet[" << HS_ACC() << "]: Malformed transaction. " + << "HookSet(" << hook::log::RETURN_HOOK_CBAK << ")[" + << HS_ACC() << "]: Malformed transaction. " << (j == hook_type_idx ? "hook" : "cbak") << " j=" << j << " " << " function definition must have exactly one int64_t return type. " << "resultcount=" << result_count << ", resulttype=" << result_type << ", " @@ -1022,7 +1037,8 @@ validateCreateCode(SetHookCtx& ctx, STObject const& hookSetObj) if (!(hook[i] >= 0x7C && hook[i] <= 0x7F)) { JLOG(ctx.j.trace()) - << "HookSet[" << HS_ACC() << "]: Invalid local type. " + << "HookSet(" << hook::log::TYPE_INVALID << ")[" + << HS_ACC() << "]: Invalid local type. " << "Codesec: " << j << " " << "Local: " << k << " " << "Offset: " << i; @@ -1056,7 +1072,7 @@ validateCreateCode(SetHookCtx& ctx, STObject const& hookSetObj) // execution to here means guards are installed correctly JLOG(ctx.j.trace()) - << "HookSet[" << HS_ACC() << "]: Trying to wasm instantiate proposed hook " + << "HookSet(" << hook::log::WASM_SMOKE_TEST << ")[" << HS_ACC() << "]: Trying to wasm instantiate proposed hook " << "size = " << hook.size(); std::optional result = @@ -1065,7 +1081,7 @@ validateCreateCode(SetHookCtx& ctx, STObject const& hookSetObj) if (result) { JLOG(ctx.j.trace()) - << "HookSet[" << HS_ACC() << "]: " + << "HookSet(" << hook::log::WASM_TEST_FAILURE << ")[" << HS_ACC() << "]: " << "Tried to set a hook with invalid code. VM error: " << *result; return {false, 0}; } @@ -1326,7 +1342,7 @@ SetHook::preclaim(ripple::PreclaimContext const& ctx) if (!ctx.view.exists(keylet::hookDefinition(hash))) { JLOG(ctx.j.trace()) - << "HookSet[" << HS_ACC() + << "HookSet(" << hook::log::HOOK_DEF_MISSING << ")[" << HS_ACC() << "]: Malformed transaction: No hook exists with the specified hash."; return terNO_HOOK; } @@ -1342,7 +1358,9 @@ SetHook::preflight(PreflightContext const& ctx) if (!ctx.rules.enabled(featureHooks)) { - JLOG(ctx.j.warn()) << "HookSet[" << HS_ACC() << "]: Hooks Amendment not enabled!"; + JLOG(ctx.j.warn()) + << "HookSet[(" << hook::log::AMENDMENT_DISABLED << ")" + << HS_ACC() << "]: Hooks Amendment not enabled!"; return temDISABLED; } @@ -1353,7 +1371,8 @@ SetHook::preflight(PreflightContext const& ctx) if (!ctx.tx.isFieldPresent(sfHooks)) { JLOG(ctx.j.trace()) - << "HookSet[" << HS_ACC() << "]: Malformed transaction: SetHook lacked sfHooks array."; + << "HookSet(" << hook::log::HOOKS_ARRAY_MISSING << ")[" + << HS_ACC() << "]: Malformed transaction: SetHook lacked sfHooks array."; return temMALFORMED; } @@ -1362,7 +1381,7 @@ SetHook::preflight(PreflightContext const& ctx) if (hookSets.size() < 1) { JLOG(ctx.j.trace()) - << "HookSet[" << HS_ACC() + << "HookSet(" << hook::log::HOOKS_ARRAY_EMPTY << ")[" << HS_ACC() << "]: Malformed transaction: SetHook sfHooks empty."; return temMALFORMED; } @@ -1370,7 +1389,7 @@ SetHook::preflight(PreflightContext const& ctx) if (hookSets.size() > hook::maxHookChainLength()) { JLOG(ctx.j.trace()) - << "HookSet[" << HS_ACC() + << "HookSet(" << hook::log::HOOKS_ARRAY_TOO_BIG << ")[" << HS_ACC() << "]: Malformed transaction: SetHook sfHooks contains more than " << hook::maxHookChainLength() << " entries."; return temMALFORMED; @@ -1393,7 +1412,8 @@ SetHook::preflight(PreflightContext const& ctx) if (!hookSetObj || (hookSetObj->getFName() != sfHook)) { JLOG(ctx.j.trace()) - << "HookSet[" << HS_ACC() + << "HookSet(" << hook::log::HOOKS_ARRAY_BAD << ")[" + << HS_ACC() << "]: Malformed transaction: SetHook sfHooks contains obj other than sfHook."; return temMALFORMED; } @@ -1417,7 +1437,7 @@ SetHook::preflight(PreflightContext const& ctx) name != sfFlags) { JLOG(ctx.j.trace()) - << "HookSet[" << HS_ACC() + << "HookSet(" << hook::log::HOOK_INVALID_FIELD << ")[" << HS_ACC() << "]: Malformed transaction: SetHook sfHook contains invalid field."; return temMALFORMED; } @@ -1437,7 +1457,8 @@ SetHook::preflight(PreflightContext const& ctx) catch (std::exception& e) { JLOG(ctx.j.trace()) - << "HookSet[" << HS_ACC() << "]: Exception: " << e.what(); + << "HookSet(" << hook::log::WASM_VALIDATION + << ")[" << HS_ACC() << "]: Exception: " << e.what(); return temMALFORMED; } } @@ -1445,7 +1466,8 @@ SetHook::preflight(PreflightContext const& ctx) if (allBlank) { JLOG(ctx.j.trace()) - << "HookSet[" << HS_ACC() + << "HookSet(" << hook::log::HOOKS_ARRAY_BLANK << ")[" + << HS_ACC() << "]: Malformed transaction: SetHook sfHooks must contain at least one non-blank sfHook."; return temMALFORMED; } @@ -1477,7 +1499,7 @@ SetHook::destroyNamespace( uint256 ns ) { JLOG(ctx.j.trace()) - << "HookSet[" << HS_ACC() << "]: DeleteState " + << "HookSet(" << hook::log::NSDELETE << ")[" << HS_ACC() << "]: DeleteState " << "Destroying Hook Namespace for " << account << " namespace " << ns; Keylet dirKeylet = keylet::hookStateDir(account, ns); @@ -1495,7 +1517,8 @@ SetHook::destroyNamespace( if (!sleAccount) { JLOG(ctx.j.fatal()) - << "HookSet[" << HS_ACC() << "]: Account does not exist to destroy namespace from"; + << "HookSet(" << hook::log::NSDELETE_ACCOUNT + << ")[" << HS_ACC() << "]: Account does not exist to destroy namespace from"; return tefBAD_LEDGER; } @@ -1507,7 +1530,7 @@ SetHook::destroyNamespace( uDirEntry, dirEntry)) { JLOG(ctx.j.fatal()) - << "HookSet[" << HS_ACC() << "]: DeleteState " + << "HookSet(" << hook::log::NSDELETE_DIRECTORY << ")[" << HS_ACC() << "]: DeleteState " << "directory missing "; return tefINTERNAL; } @@ -1526,7 +1549,7 @@ SetHook::destroyNamespace( { // Directory node has an invalid index. Bail out. JLOG(ctx.j.fatal()) - << "HookSet[" << HS_ACC() << "]: DeleteState " + << "HookSet(" << hook::log::NSDELETE_DIR_ENTRY << ")[" << HS_ACC() << "]: DeleteState " << "directory node in ledger " << view.seq() << " " << "has index to object that is missing: " << to_string(dirEntry); @@ -1538,7 +1561,7 @@ SetHook::destroyNamespace( if (nodeType != ltHOOK_STATE) { JLOG(ctx.j.fatal()) - << "HookSet[" << HS_ACC() << "]: DeleteState " + << "HookSet(" << hook::log::NSDELETE_NONSTATE << ")[" << HS_ACC() << "]: DeleteState " << "directory node in ledger " << view.seq() << " " << "has non-ltHOOK_STATE entry " << to_string(dirEntry); return tefBAD_LEDGER; @@ -1549,7 +1572,6 @@ SetHook::destroyNamespace( } while (cdirNext(view, dirKeylet.key, sleDirNode, uDirEntry, dirEntry)); - // delete it! for (auto const& itemKey: toDelete) { @@ -1559,7 +1581,8 @@ SetHook::destroyNamespace( if (!sleItem) { JLOG(ctx.j.warn()) - << "HookSet[" << HS_ACC() << "]: DeleteState " + << "HookSet(" << hook::log::NSDELETE_ENTRY + << ")[" << HS_ACC() << "]: DeleteState " << "Namespace ltHOOK_STATE entry was not found in ledger: " << itemKey; continue; @@ -1569,7 +1592,8 @@ SetHook::destroyNamespace( if (!view.dirRemove(dirKeylet, hint, itemKey, false)) { JLOG(ctx.j.fatal()) - << "HookSet[" << HS_ACC() << "]: DeleteState " + << "HookSet(" << hook::log::NSDELETE_DIR + << ")[" << HS_ACC() << "]: DeleteState " << "directory node in ledger " << view.seq() << " " << "could not be deleted."; return tefBAD_LEDGER; @@ -1581,7 +1605,7 @@ SetHook::destroyNamespace( if (stateCount > oldStateCount) { JLOG(ctx.j.fatal()) - << "HookSet[" << HS_ACC() << "]: DeleteState " + << "HookSet(" << hook::log::NSDELETE_COUNT << ")[" << HS_ACC() << "]: DeleteState " << "stateCount less than zero (overflow)"; return tefBAD_LEDGER; @@ -1637,38 +1661,6 @@ void incrementReferenceCount(std::shared_ptr& sle) sle->setFieldU64(sfReferenceCount, sle->getFieldU64(sfReferenceCount) + 1); } -// increment or create namespace directory -/* -TER -SetHook:: -createOrReuseNamespace(ripple::Keylet& newDirKeylet) -{ - auto& sle = view().peek(newDirKeylet); - if (sle) - { - incrementReferenceCount(sle); - return tesSUCCESS; - } - - sle = std::make_shared(newDirKeylet); - - auto const page = view().dirInsert( - keylet::ownerDir(account_), - newDirKeylet->key, - describeOwnerDir(account_)); - JLOG(ctx.j.trace()) << "Create state dir for account " << toBase58(account_) - << ": " << (page ? "success" : "failure"); - if (!page) - return tecDIR_FULL; - sle->setFieldU64(sfOwnerNode, *page); - sle->setFieldU64(sfReferenceCount, 1); - view().insert(sle); - return tesSUSCCESS; -} - //if (oldDirSLE) - // reduceReferenceCount(oldDirSLE, (flag & hsoNSDELETE) ? namespacesToDestroy : std::nullopt); -*/ - TER updateHookParameters( SetHookCtx& ctx, @@ -1709,7 +1701,7 @@ updateHookParameters( if (parameterCount > 16) { JLOG(ctx.j.fatal()) - << "HookSet[" << HS_ACC() + << "HookSet(" << hook::log::HOOK_PARAMS_COUNT << ")[" << HS_ACC() << "]: Malformed transaction: Txn would result in too many parameters on hook"; return tecINTERNAL; } @@ -1720,7 +1712,7 @@ updateHookParameters( if (parameterName.size() > paramKeyMax || parameterValue.size() > paramValueMax) { JLOG(ctx.j.fatal()) - << "HookSet[" << HS_ACC() + << "HookSet(" << hook::log::HOOK_PARAM_SIZE << ")[" << HS_ACC() << "]: Malformed transaction: Txn would result in a too large parameter name/value on hook"; return tecINTERNAL; } @@ -1916,7 +1908,7 @@ SetHook::setHook() else { JLOG(ctx.j.warn()) - << "HookSet[" << HS_ACC() + << "HookSet(" << hook::log::NSDELETE_NOTHING << ")[" << HS_ACC() << "]: SetHook hsoNSDELETE specified but nothing to delete"; } } @@ -1952,7 +1944,7 @@ SetHook::setHook() if (!(flags & hsfOVERRIDE)) { JLOG(ctx.j.trace()) - << "HookSet[" << HS_ACC() + << "HookSet(" << hook::log::DELETE_FLAG << ")[" << HS_ACC() << "]: SetHook delete operation requires hsfOVERRIDE flag"; return tecREQUIRES_FLAG; } @@ -1963,7 +1955,7 @@ SetHook::setHook() if (!oldHook) { JLOG(ctx.j.trace()) - << "HookSet[" << HS_ACC() + << "HookSet(" << hook::log::DELETE_NOTHING << ")[" << HS_ACC() << "]: SetHook delete operation deletes non-existent hook"; continue; @@ -2012,7 +2004,7 @@ SetHook::setHook() if (oldHook && oldHook->get().isFieldPresent(sfHookHash) && !(flags & hsfOVERRIDE)) { JLOG(ctx.j.trace()) - << "HookSet[" << HS_ACC() + << "HookSet(" << hook::log::CREATE_FLAG << ")[" << HS_ACC() << "]: SetHook create operation would override but hsfOVERRIDE flag wasn't specified"; return tecREQUIRES_FLAG; } @@ -2023,7 +2015,7 @@ SetHook::setHook() if (wasmBytes.size() > blobMax) { JLOG(ctx.j.warn()) - << "HookSet[" << HS_ACC() + << "HookSet(" << hook::log::WASM_TOO_BIG << ")[" << HS_ACC() << "]: Malformed transaction: SetHook operation would create blob larger than max"; return tecINTERNAL; } @@ -2057,7 +2049,7 @@ SetHook::setHook() if (!valid) { JLOG(ctx.j.warn()) - << "HookSet[" << HS_ACC() + << "HookSet(" << hook::log::WASM_INVALID << ")[" << HS_ACC() << "]: Malformed transaction: SetHook operation would create invalid hook wasm"; return tecINTERNAL; } @@ -2065,7 +2057,7 @@ SetHook::setHook() catch (std::exception& e) { JLOG(ctx.j.warn()) - << "HookSet[" << HS_ACC() + << "HookSet(" << hook::log::WASM_INVALID << ")[" << HS_ACC() << "]: Malformed transaction: SetHook operation would create invalid hook wasm"; return tecINTERNAL; } @@ -2108,7 +2100,7 @@ SetHook::setHook() if (oldHook && oldHook->get().isFieldPresent(sfHookHash) && !(flags & hsfOVERRIDE)) { JLOG(ctx.j.trace()) - << "HookSet[" << HS_ACC() + << "HookSet(" << hook::log::INSTALL_FLAG << ")[" << HS_ACC() << "]: SetHook install operation would override but hsfOVERRIDE flag wasn't specified"; return tecREQUIRES_FLAG; } @@ -2117,7 +2109,7 @@ SetHook::setHook() if (!newDefSLE) { JLOG(ctx.j.trace()) - << "HookSet[" << HS_ACC() + << "HookSet(" << hook::log::INSTALL_MISSING << ")[" << HS_ACC() << "]: SetHook install operation specified HookHash which does not exist on ledger"; return tecNO_ENTRY; } @@ -2174,8 +2166,8 @@ SetHook::setHook() default: { JLOG(ctx.j.warn()) - << "HookSet[" << HS_ACC() - << "]: Malformed transaction: sethook could not find a namespace to place hook state into."; + << "HookSet(" << hook::log::OPERATION_INVALID << ")[" << HS_ACC() + << "]: Malformed transaction: sethook could not understand the desired operation."; return tecCLAIM; } }