From 74c0f9fa0f0d48b3fbc5957185acb9f67b4e53e7 Mon Sep 17 00:00:00 2001 From: Richard Holland Date: Thu, 19 Jan 2023 10:25:12 +0000 Subject: [PATCH] enforce guard call limit of 1024 --- src/ripple/app/hook/Enum.h | 263 ------------------------------- src/ripple/app/hook/Guard.h | 18 ++- src/ripple/app/hook/Misc.h | 269 ++++++++++++++++++++++++++++++++ src/ripple/app/hook/applyHook.h | 1 + 4 files changed, 287 insertions(+), 264 deletions(-) create mode 100644 src/ripple/app/hook/Misc.h diff --git a/src/ripple/app/hook/Enum.h b/src/ripple/app/hook/Enum.h index 933aae843..54ee72d16 100644 --- a/src/ripple/app/hook/Enum.h +++ b/src/ripple/app/hook/Enum.h @@ -240,269 +240,6 @@ namespace hook_api const uint8_t max_params = 16; const double fee_base_multiplier = 1.1f; - - // RH TODO: there's definitely a mucher nicer way to do this, but it involves modifying the base_uint - // class and we don't want to do that yet. - static const std::array UINT256_BIT = - { - ripple::uint256("0000000000000000000000000000000000000000000000000000000000000001"), - ripple::uint256("0000000000000000000000000000000000000000000000000000000000000002"), - ripple::uint256("0000000000000000000000000000000000000000000000000000000000000004"), - ripple::uint256("0000000000000000000000000000000000000000000000000000000000000008"), - ripple::uint256("0000000000000000000000000000000000000000000000000000000000000010"), - ripple::uint256("0000000000000000000000000000000000000000000000000000000000000020"), - ripple::uint256("0000000000000000000000000000000000000000000000000000000000000040"), - ripple::uint256("0000000000000000000000000000000000000000000000000000000000000080"), - ripple::uint256("0000000000000000000000000000000000000000000000000000000000000100"), - ripple::uint256("0000000000000000000000000000000000000000000000000000000000000200"), - ripple::uint256("0000000000000000000000000000000000000000000000000000000000000400"), - ripple::uint256("0000000000000000000000000000000000000000000000000000000000000800"), - ripple::uint256("0000000000000000000000000000000000000000000000000000000000001000"), - ripple::uint256("0000000000000000000000000000000000000000000000000000000000002000"), - ripple::uint256("0000000000000000000000000000000000000000000000000000000000004000"), - ripple::uint256("0000000000000000000000000000000000000000000000000000000000008000"), - ripple::uint256("0000000000000000000000000000000000000000000000000000000000010000"), - ripple::uint256("0000000000000000000000000000000000000000000000000000000000020000"), - ripple::uint256("0000000000000000000000000000000000000000000000000000000000040000"), - ripple::uint256("0000000000000000000000000000000000000000000000000000000000080000"), - ripple::uint256("0000000000000000000000000000000000000000000000000000000000100000"), - ripple::uint256("0000000000000000000000000000000000000000000000000000000000200000"), - ripple::uint256("0000000000000000000000000000000000000000000000000000000000400000"), - ripple::uint256("0000000000000000000000000000000000000000000000000000000000800000"), - ripple::uint256("0000000000000000000000000000000000000000000000000000000001000000"), - ripple::uint256("0000000000000000000000000000000000000000000000000000000002000000"), - ripple::uint256("0000000000000000000000000000000000000000000000000000000004000000"), - ripple::uint256("0000000000000000000000000000000000000000000000000000000008000000"), - ripple::uint256("0000000000000000000000000000000000000000000000000000000010000000"), - ripple::uint256("0000000000000000000000000000000000000000000000000000000020000000"), - ripple::uint256("0000000000000000000000000000000000000000000000000000000040000000"), - ripple::uint256("0000000000000000000000000000000000000000000000000000000080000000"), - ripple::uint256("0000000000000000000000000000000000000000000000000000000100000000"), - ripple::uint256("0000000000000000000000000000000000000000000000000000000200000000"), - ripple::uint256("0000000000000000000000000000000000000000000000000000000400000000"), - ripple::uint256("0000000000000000000000000000000000000000000000000000000800000000"), - ripple::uint256("0000000000000000000000000000000000000000000000000000001000000000"), - ripple::uint256("0000000000000000000000000000000000000000000000000000002000000000"), - ripple::uint256("0000000000000000000000000000000000000000000000000000004000000000"), - ripple::uint256("0000000000000000000000000000000000000000000000000000008000000000"), - ripple::uint256("0000000000000000000000000000000000000000000000000000010000000000"), - ripple::uint256("0000000000000000000000000000000000000000000000000000020000000000"), - ripple::uint256("0000000000000000000000000000000000000000000000000000040000000000"), - ripple::uint256("0000000000000000000000000000000000000000000000000000080000000000"), - ripple::uint256("0000000000000000000000000000000000000000000000000000100000000000"), - ripple::uint256("0000000000000000000000000000000000000000000000000000200000000000"), - ripple::uint256("0000000000000000000000000000000000000000000000000000400000000000"), - ripple::uint256("0000000000000000000000000000000000000000000000000000800000000000"), - ripple::uint256("0000000000000000000000000000000000000000000000000001000000000000"), - ripple::uint256("0000000000000000000000000000000000000000000000000002000000000000"), - ripple::uint256("0000000000000000000000000000000000000000000000000004000000000000"), - ripple::uint256("0000000000000000000000000000000000000000000000000008000000000000"), - ripple::uint256("0000000000000000000000000000000000000000000000000010000000000000"), - ripple::uint256("0000000000000000000000000000000000000000000000000020000000000000"), - ripple::uint256("0000000000000000000000000000000000000000000000000040000000000000"), - ripple::uint256("0000000000000000000000000000000000000000000000000080000000000000"), - ripple::uint256("0000000000000000000000000000000000000000000000000100000000000000"), - ripple::uint256("0000000000000000000000000000000000000000000000000200000000000000"), - ripple::uint256("0000000000000000000000000000000000000000000000000400000000000000"), - ripple::uint256("0000000000000000000000000000000000000000000000000800000000000000"), - ripple::uint256("0000000000000000000000000000000000000000000000001000000000000000"), - ripple::uint256("0000000000000000000000000000000000000000000000002000000000000000"), - ripple::uint256("0000000000000000000000000000000000000000000000004000000000000000"), - ripple::uint256("0000000000000000000000000000000000000000000000008000000000000000"), - ripple::uint256("0000000000000000000000000000000000000000000000010000000000000000"), - ripple::uint256("0000000000000000000000000000000000000000000000020000000000000000"), - ripple::uint256("0000000000000000000000000000000000000000000000040000000000000000"), - ripple::uint256("0000000000000000000000000000000000000000000000080000000000000000"), - ripple::uint256("0000000000000000000000000000000000000000000000100000000000000000"), - ripple::uint256("0000000000000000000000000000000000000000000000200000000000000000"), - ripple::uint256("0000000000000000000000000000000000000000000000400000000000000000"), - ripple::uint256("0000000000000000000000000000000000000000000000800000000000000000"), - ripple::uint256("0000000000000000000000000000000000000000000001000000000000000000"), - ripple::uint256("0000000000000000000000000000000000000000000002000000000000000000"), - ripple::uint256("0000000000000000000000000000000000000000000004000000000000000000"), - ripple::uint256("0000000000000000000000000000000000000000000008000000000000000000"), - ripple::uint256("0000000000000000000000000000000000000000000010000000000000000000"), - ripple::uint256("0000000000000000000000000000000000000000000020000000000000000000"), - ripple::uint256("0000000000000000000000000000000000000000000040000000000000000000"), - ripple::uint256("0000000000000000000000000000000000000000000080000000000000000000"), - ripple::uint256("0000000000000000000000000000000000000000000100000000000000000000"), - ripple::uint256("0000000000000000000000000000000000000000000200000000000000000000"), - ripple::uint256("0000000000000000000000000000000000000000000400000000000000000000"), - ripple::uint256("0000000000000000000000000000000000000000000800000000000000000000"), - ripple::uint256("0000000000000000000000000000000000000000001000000000000000000000"), - ripple::uint256("0000000000000000000000000000000000000000002000000000000000000000"), - ripple::uint256("0000000000000000000000000000000000000000004000000000000000000000"), - ripple::uint256("0000000000000000000000000000000000000000008000000000000000000000"), - ripple::uint256("0000000000000000000000000000000000000000010000000000000000000000"), - ripple::uint256("0000000000000000000000000000000000000000020000000000000000000000"), - ripple::uint256("0000000000000000000000000000000000000000040000000000000000000000"), - ripple::uint256("0000000000000000000000000000000000000000080000000000000000000000"), - ripple::uint256("0000000000000000000000000000000000000000100000000000000000000000"), - ripple::uint256("0000000000000000000000000000000000000000200000000000000000000000"), - ripple::uint256("0000000000000000000000000000000000000000400000000000000000000000"), - ripple::uint256("0000000000000000000000000000000000000000800000000000000000000000"), - ripple::uint256("0000000000000000000000000000000000000001000000000000000000000000"), - ripple::uint256("0000000000000000000000000000000000000002000000000000000000000000"), - ripple::uint256("0000000000000000000000000000000000000004000000000000000000000000"), - ripple::uint256("0000000000000000000000000000000000000008000000000000000000000000"), - ripple::uint256("0000000000000000000000000000000000000010000000000000000000000000"), - ripple::uint256("0000000000000000000000000000000000000020000000000000000000000000"), - ripple::uint256("0000000000000000000000000000000000000040000000000000000000000000"), - ripple::uint256("0000000000000000000000000000000000000080000000000000000000000000"), - ripple::uint256("0000000000000000000000000000000000000100000000000000000000000000"), - ripple::uint256("0000000000000000000000000000000000000200000000000000000000000000"), - ripple::uint256("0000000000000000000000000000000000000400000000000000000000000000"), - ripple::uint256("0000000000000000000000000000000000000800000000000000000000000000"), - ripple::uint256("0000000000000000000000000000000000001000000000000000000000000000"), - ripple::uint256("0000000000000000000000000000000000002000000000000000000000000000"), - ripple::uint256("0000000000000000000000000000000000004000000000000000000000000000"), - ripple::uint256("0000000000000000000000000000000000008000000000000000000000000000"), - ripple::uint256("0000000000000000000000000000000000010000000000000000000000000000"), - ripple::uint256("0000000000000000000000000000000000020000000000000000000000000000"), - ripple::uint256("0000000000000000000000000000000000040000000000000000000000000000"), - ripple::uint256("0000000000000000000000000000000000080000000000000000000000000000"), - ripple::uint256("0000000000000000000000000000000000100000000000000000000000000000"), - ripple::uint256("0000000000000000000000000000000000200000000000000000000000000000"), - ripple::uint256("0000000000000000000000000000000000400000000000000000000000000000"), - ripple::uint256("0000000000000000000000000000000000800000000000000000000000000000"), - ripple::uint256("0000000000000000000000000000000001000000000000000000000000000000"), - ripple::uint256("0000000000000000000000000000000002000000000000000000000000000000"), - ripple::uint256("0000000000000000000000000000000004000000000000000000000000000000"), - ripple::uint256("0000000000000000000000000000000008000000000000000000000000000000"), - ripple::uint256("0000000000000000000000000000000010000000000000000000000000000000"), - ripple::uint256("0000000000000000000000000000000020000000000000000000000000000000"), - ripple::uint256("0000000000000000000000000000000040000000000000000000000000000000"), - ripple::uint256("0000000000000000000000000000000080000000000000000000000000000000"), - ripple::uint256("0000000000000000000000000000000100000000000000000000000000000000"), - ripple::uint256("0000000000000000000000000000000200000000000000000000000000000000"), - ripple::uint256("0000000000000000000000000000000400000000000000000000000000000000"), - ripple::uint256("0000000000000000000000000000000800000000000000000000000000000000"), - ripple::uint256("0000000000000000000000000000001000000000000000000000000000000000"), - ripple::uint256("0000000000000000000000000000002000000000000000000000000000000000"), - ripple::uint256("0000000000000000000000000000004000000000000000000000000000000000"), - ripple::uint256("0000000000000000000000000000008000000000000000000000000000000000"), - ripple::uint256("0000000000000000000000000000010000000000000000000000000000000000"), - ripple::uint256("0000000000000000000000000000020000000000000000000000000000000000"), - ripple::uint256("0000000000000000000000000000040000000000000000000000000000000000"), - ripple::uint256("0000000000000000000000000000080000000000000000000000000000000000"), - ripple::uint256("0000000000000000000000000000100000000000000000000000000000000000"), - ripple::uint256("0000000000000000000000000000200000000000000000000000000000000000"), - ripple::uint256("0000000000000000000000000000400000000000000000000000000000000000"), - ripple::uint256("0000000000000000000000000000800000000000000000000000000000000000"), - ripple::uint256("0000000000000000000000000001000000000000000000000000000000000000"), - ripple::uint256("0000000000000000000000000002000000000000000000000000000000000000"), - ripple::uint256("0000000000000000000000000004000000000000000000000000000000000000"), - ripple::uint256("0000000000000000000000000008000000000000000000000000000000000000"), - ripple::uint256("0000000000000000000000000010000000000000000000000000000000000000"), - ripple::uint256("0000000000000000000000000020000000000000000000000000000000000000"), - ripple::uint256("0000000000000000000000000040000000000000000000000000000000000000"), - ripple::uint256("0000000000000000000000000080000000000000000000000000000000000000"), - ripple::uint256("0000000000000000000000000100000000000000000000000000000000000000"), - ripple::uint256("0000000000000000000000000200000000000000000000000000000000000000"), - ripple::uint256("0000000000000000000000000400000000000000000000000000000000000000"), - ripple::uint256("0000000000000000000000000800000000000000000000000000000000000000"), - ripple::uint256("0000000000000000000000001000000000000000000000000000000000000000"), - ripple::uint256("0000000000000000000000002000000000000000000000000000000000000000"), - ripple::uint256("0000000000000000000000004000000000000000000000000000000000000000"), - ripple::uint256("0000000000000000000000008000000000000000000000000000000000000000"), - ripple::uint256("0000000000000000000000010000000000000000000000000000000000000000"), - ripple::uint256("0000000000000000000000020000000000000000000000000000000000000000"), - ripple::uint256("0000000000000000000000040000000000000000000000000000000000000000"), - ripple::uint256("0000000000000000000000080000000000000000000000000000000000000000"), - ripple::uint256("0000000000000000000000100000000000000000000000000000000000000000"), - ripple::uint256("0000000000000000000000200000000000000000000000000000000000000000"), - ripple::uint256("0000000000000000000000400000000000000000000000000000000000000000"), - ripple::uint256("0000000000000000000000800000000000000000000000000000000000000000"), - ripple::uint256("0000000000000000000001000000000000000000000000000000000000000000"), - ripple::uint256("0000000000000000000002000000000000000000000000000000000000000000"), - ripple::uint256("0000000000000000000004000000000000000000000000000000000000000000"), - ripple::uint256("0000000000000000000008000000000000000000000000000000000000000000"), - ripple::uint256("0000000000000000000010000000000000000000000000000000000000000000"), - ripple::uint256("0000000000000000000020000000000000000000000000000000000000000000"), - ripple::uint256("0000000000000000000040000000000000000000000000000000000000000000"), - ripple::uint256("0000000000000000000080000000000000000000000000000000000000000000"), - ripple::uint256("0000000000000000000100000000000000000000000000000000000000000000"), - ripple::uint256("0000000000000000000200000000000000000000000000000000000000000000"), - ripple::uint256("0000000000000000000400000000000000000000000000000000000000000000"), - ripple::uint256("0000000000000000000800000000000000000000000000000000000000000000"), - ripple::uint256("0000000000000000001000000000000000000000000000000000000000000000"), - ripple::uint256("0000000000000000002000000000000000000000000000000000000000000000"), - ripple::uint256("0000000000000000004000000000000000000000000000000000000000000000"), - ripple::uint256("0000000000000000008000000000000000000000000000000000000000000000"), - ripple::uint256("0000000000000000010000000000000000000000000000000000000000000000"), - ripple::uint256("0000000000000000020000000000000000000000000000000000000000000000"), - ripple::uint256("0000000000000000040000000000000000000000000000000000000000000000"), - ripple::uint256("0000000000000000080000000000000000000000000000000000000000000000"), - ripple::uint256("0000000000000000100000000000000000000000000000000000000000000000"), - ripple::uint256("0000000000000000200000000000000000000000000000000000000000000000"), - ripple::uint256("0000000000000000400000000000000000000000000000000000000000000000"), - ripple::uint256("0000000000000000800000000000000000000000000000000000000000000000"), - ripple::uint256("0000000000000001000000000000000000000000000000000000000000000000"), - ripple::uint256("0000000000000002000000000000000000000000000000000000000000000000"), - ripple::uint256("0000000000000004000000000000000000000000000000000000000000000000"), - ripple::uint256("0000000000000008000000000000000000000000000000000000000000000000"), - ripple::uint256("0000000000000010000000000000000000000000000000000000000000000000"), - ripple::uint256("0000000000000020000000000000000000000000000000000000000000000000"), - ripple::uint256("0000000000000040000000000000000000000000000000000000000000000000"), - ripple::uint256("0000000000000080000000000000000000000000000000000000000000000000"), - ripple::uint256("0000000000000100000000000000000000000000000000000000000000000000"), - ripple::uint256("0000000000000200000000000000000000000000000000000000000000000000"), - ripple::uint256("0000000000000400000000000000000000000000000000000000000000000000"), - ripple::uint256("0000000000000800000000000000000000000000000000000000000000000000"), - ripple::uint256("0000000000001000000000000000000000000000000000000000000000000000"), - ripple::uint256("0000000000002000000000000000000000000000000000000000000000000000"), - ripple::uint256("0000000000004000000000000000000000000000000000000000000000000000"), - ripple::uint256("0000000000008000000000000000000000000000000000000000000000000000"), - ripple::uint256("0000000000010000000000000000000000000000000000000000000000000000"), - ripple::uint256("0000000000020000000000000000000000000000000000000000000000000000"), - ripple::uint256("0000000000040000000000000000000000000000000000000000000000000000"), - ripple::uint256("0000000000080000000000000000000000000000000000000000000000000000"), - ripple::uint256("0000000000100000000000000000000000000000000000000000000000000000"), - ripple::uint256("0000000000200000000000000000000000000000000000000000000000000000"), - ripple::uint256("0000000000400000000000000000000000000000000000000000000000000000"), - ripple::uint256("0000000000800000000000000000000000000000000000000000000000000000"), - ripple::uint256("0000000001000000000000000000000000000000000000000000000000000000"), - ripple::uint256("0000000002000000000000000000000000000000000000000000000000000000"), - ripple::uint256("0000000004000000000000000000000000000000000000000000000000000000"), - ripple::uint256("0000000008000000000000000000000000000000000000000000000000000000"), - ripple::uint256("0000000010000000000000000000000000000000000000000000000000000000"), - ripple::uint256("0000000020000000000000000000000000000000000000000000000000000000"), - ripple::uint256("0000000040000000000000000000000000000000000000000000000000000000"), - ripple::uint256("0000000080000000000000000000000000000000000000000000000000000000"), - ripple::uint256("0000000100000000000000000000000000000000000000000000000000000000"), - ripple::uint256("0000000200000000000000000000000000000000000000000000000000000000"), - ripple::uint256("0000000400000000000000000000000000000000000000000000000000000000"), - ripple::uint256("0000000800000000000000000000000000000000000000000000000000000000"), - ripple::uint256("0000001000000000000000000000000000000000000000000000000000000000"), - ripple::uint256("0000002000000000000000000000000000000000000000000000000000000000"), - ripple::uint256("0000004000000000000000000000000000000000000000000000000000000000"), - ripple::uint256("0000008000000000000000000000000000000000000000000000000000000000"), - ripple::uint256("0000010000000000000000000000000000000000000000000000000000000000"), - ripple::uint256("0000020000000000000000000000000000000000000000000000000000000000"), - ripple::uint256("0000040000000000000000000000000000000000000000000000000000000000"), - ripple::uint256("0000080000000000000000000000000000000000000000000000000000000000"), - ripple::uint256("0000100000000000000000000000000000000000000000000000000000000000"), - ripple::uint256("0000200000000000000000000000000000000000000000000000000000000000"), - ripple::uint256("0000400000000000000000000000000000000000000000000000000000000000"), - ripple::uint256("0000800000000000000000000000000000000000000000000000000000000000"), - ripple::uint256("0001000000000000000000000000000000000000000000000000000000000000"), - ripple::uint256("0002000000000000000000000000000000000000000000000000000000000000"), - ripple::uint256("0004000000000000000000000000000000000000000000000000000000000000"), - ripple::uint256("0008000000000000000000000000000000000000000000000000000000000000"), - ripple::uint256("0010000000000000000000000000000000000000000000000000000000000000"), - ripple::uint256("0020000000000000000000000000000000000000000000000000000000000000"), - ripple::uint256("0040000000000000000000000000000000000000000000000000000000000000"), - ripple::uint256("0080000000000000000000000000000000000000000000000000000000000000"), - ripple::uint256("0100000000000000000000000000000000000000000000000000000000000000"), - ripple::uint256("0200000000000000000000000000000000000000000000000000000000000000"), - ripple::uint256("0400000000000000000000000000000000000000000000000000000000000000"), - ripple::uint256("0800000000000000000000000000000000000000000000000000000000000000"), - ripple::uint256("1000000000000000000000000000000000000000000000000000000000000000"), - ripple::uint256("2000000000000000000000000000000000000000000000000000000000000000"), - ripple::uint256("4000000000000000000000000000000000000000000000000000000000000000"), - ripple::uint256("8000000000000000000000000000000000000000000000000000000000000000") - }; - // RH NOTE: Find descriptions of api functions in ./impl/applyHook.cpp and hookapi.h (include for hooks) static const std::set import_whitelist { diff --git a/src/ripple/app/hook/Guard.h b/src/ripple/app/hook/Guard.h index 3a1b8dff0..040891b5f 100644 --- a/src/ripple/app/hook/Guard.h +++ b/src/ripple/app/hook/Guard.h @@ -11,7 +11,7 @@ using GuardLog = std::optional>>; -#define DEBUG_GUARD 0 +#define DEBUG_GUARD 1 #define DEBUG_GUARD_VERBOSE 0 #define DEBUG_GUARD_VERY_VERBOSE 0 @@ -210,6 +210,9 @@ check_guard( std::string guardLogAccStr) { + #define MAX_GUARD_CALLS 1024 + uint32_t guard_count = 0; + if (DEBUG_GUARD) printf("\ncheck_guard called with " "codesec=%d start_offset=%d end_offset=%d guard_func_idx=%d last_import_idx=%d\n", @@ -310,6 +313,10 @@ check_guard( if (call_func_idx != guard_func_idx) GUARD_ERROR("Call after first and second i32.const at loop start was not _g"); + + if (guard_count++ > MAX_GUARD_CALLS) + GUARD_ERROR("Too many guard calls! Limit is 1024"); + printf("guard_count: %d\n", guard_count); } current->children.push_back( @@ -388,6 +395,15 @@ check_guard( return {}; } + + // enforce guard call limit + if (callee_idx == guard_func_idx) + { + if (guard_count++ > MAX_GUARD_CALLS) + GUARD_ERROR("Too many guard calls! Limit is 1024"); + printf("guard_count: %d\n", guard_count); + } + continue; } diff --git a/src/ripple/app/hook/Misc.h b/src/ripple/app/hook/Misc.h new file mode 100644 index 000000000..a24737829 --- /dev/null +++ b/src/ripple/app/hook/Misc.h @@ -0,0 +1,269 @@ + +#ifndef HOOKMISC_INCLUDED +#define HOOKMISC_INCLUDED 1 +namespace ripple +{ + // RH TODO: there's definitely a mucher nicer way to do this, but it involves modifying the base_uint + // class and we don't want to do that yet. + + static const std::array UINT256_BIT = + { + ripple::uint256("0000000000000000000000000000000000000000000000000000000000000001"), + ripple::uint256("0000000000000000000000000000000000000000000000000000000000000002"), + ripple::uint256("0000000000000000000000000000000000000000000000000000000000000004"), + ripple::uint256("0000000000000000000000000000000000000000000000000000000000000008"), + ripple::uint256("0000000000000000000000000000000000000000000000000000000000000010"), + ripple::uint256("0000000000000000000000000000000000000000000000000000000000000020"), + ripple::uint256("0000000000000000000000000000000000000000000000000000000000000040"), + ripple::uint256("0000000000000000000000000000000000000000000000000000000000000080"), + ripple::uint256("0000000000000000000000000000000000000000000000000000000000000100"), + ripple::uint256("0000000000000000000000000000000000000000000000000000000000000200"), + ripple::uint256("0000000000000000000000000000000000000000000000000000000000000400"), + ripple::uint256("0000000000000000000000000000000000000000000000000000000000000800"), + ripple::uint256("0000000000000000000000000000000000000000000000000000000000001000"), + ripple::uint256("0000000000000000000000000000000000000000000000000000000000002000"), + ripple::uint256("0000000000000000000000000000000000000000000000000000000000004000"), + ripple::uint256("0000000000000000000000000000000000000000000000000000000000008000"), + ripple::uint256("0000000000000000000000000000000000000000000000000000000000010000"), + ripple::uint256("0000000000000000000000000000000000000000000000000000000000020000"), + ripple::uint256("0000000000000000000000000000000000000000000000000000000000040000"), + ripple::uint256("0000000000000000000000000000000000000000000000000000000000080000"), + ripple::uint256("0000000000000000000000000000000000000000000000000000000000100000"), + ripple::uint256("0000000000000000000000000000000000000000000000000000000000200000"), + ripple::uint256("0000000000000000000000000000000000000000000000000000000000400000"), + ripple::uint256("0000000000000000000000000000000000000000000000000000000000800000"), + ripple::uint256("0000000000000000000000000000000000000000000000000000000001000000"), + ripple::uint256("0000000000000000000000000000000000000000000000000000000002000000"), + ripple::uint256("0000000000000000000000000000000000000000000000000000000004000000"), + ripple::uint256("0000000000000000000000000000000000000000000000000000000008000000"), + ripple::uint256("0000000000000000000000000000000000000000000000000000000010000000"), + ripple::uint256("0000000000000000000000000000000000000000000000000000000020000000"), + ripple::uint256("0000000000000000000000000000000000000000000000000000000040000000"), + ripple::uint256("0000000000000000000000000000000000000000000000000000000080000000"), + ripple::uint256("0000000000000000000000000000000000000000000000000000000100000000"), + ripple::uint256("0000000000000000000000000000000000000000000000000000000200000000"), + ripple::uint256("0000000000000000000000000000000000000000000000000000000400000000"), + ripple::uint256("0000000000000000000000000000000000000000000000000000000800000000"), + ripple::uint256("0000000000000000000000000000000000000000000000000000001000000000"), + ripple::uint256("0000000000000000000000000000000000000000000000000000002000000000"), + ripple::uint256("0000000000000000000000000000000000000000000000000000004000000000"), + ripple::uint256("0000000000000000000000000000000000000000000000000000008000000000"), + ripple::uint256("0000000000000000000000000000000000000000000000000000010000000000"), + ripple::uint256("0000000000000000000000000000000000000000000000000000020000000000"), + ripple::uint256("0000000000000000000000000000000000000000000000000000040000000000"), + ripple::uint256("0000000000000000000000000000000000000000000000000000080000000000"), + ripple::uint256("0000000000000000000000000000000000000000000000000000100000000000"), + ripple::uint256("0000000000000000000000000000000000000000000000000000200000000000"), + ripple::uint256("0000000000000000000000000000000000000000000000000000400000000000"), + ripple::uint256("0000000000000000000000000000000000000000000000000000800000000000"), + ripple::uint256("0000000000000000000000000000000000000000000000000001000000000000"), + ripple::uint256("0000000000000000000000000000000000000000000000000002000000000000"), + ripple::uint256("0000000000000000000000000000000000000000000000000004000000000000"), + ripple::uint256("0000000000000000000000000000000000000000000000000008000000000000"), + ripple::uint256("0000000000000000000000000000000000000000000000000010000000000000"), + ripple::uint256("0000000000000000000000000000000000000000000000000020000000000000"), + ripple::uint256("0000000000000000000000000000000000000000000000000040000000000000"), + ripple::uint256("0000000000000000000000000000000000000000000000000080000000000000"), + ripple::uint256("0000000000000000000000000000000000000000000000000100000000000000"), + ripple::uint256("0000000000000000000000000000000000000000000000000200000000000000"), + ripple::uint256("0000000000000000000000000000000000000000000000000400000000000000"), + ripple::uint256("0000000000000000000000000000000000000000000000000800000000000000"), + ripple::uint256("0000000000000000000000000000000000000000000000001000000000000000"), + ripple::uint256("0000000000000000000000000000000000000000000000002000000000000000"), + ripple::uint256("0000000000000000000000000000000000000000000000004000000000000000"), + ripple::uint256("0000000000000000000000000000000000000000000000008000000000000000"), + ripple::uint256("0000000000000000000000000000000000000000000000010000000000000000"), + ripple::uint256("0000000000000000000000000000000000000000000000020000000000000000"), + ripple::uint256("0000000000000000000000000000000000000000000000040000000000000000"), + ripple::uint256("0000000000000000000000000000000000000000000000080000000000000000"), + ripple::uint256("0000000000000000000000000000000000000000000000100000000000000000"), + ripple::uint256("0000000000000000000000000000000000000000000000200000000000000000"), + ripple::uint256("0000000000000000000000000000000000000000000000400000000000000000"), + ripple::uint256("0000000000000000000000000000000000000000000000800000000000000000"), + ripple::uint256("0000000000000000000000000000000000000000000001000000000000000000"), + ripple::uint256("0000000000000000000000000000000000000000000002000000000000000000"), + ripple::uint256("0000000000000000000000000000000000000000000004000000000000000000"), + ripple::uint256("0000000000000000000000000000000000000000000008000000000000000000"), + ripple::uint256("0000000000000000000000000000000000000000000010000000000000000000"), + ripple::uint256("0000000000000000000000000000000000000000000020000000000000000000"), + ripple::uint256("0000000000000000000000000000000000000000000040000000000000000000"), + ripple::uint256("0000000000000000000000000000000000000000000080000000000000000000"), + ripple::uint256("0000000000000000000000000000000000000000000100000000000000000000"), + ripple::uint256("0000000000000000000000000000000000000000000200000000000000000000"), + ripple::uint256("0000000000000000000000000000000000000000000400000000000000000000"), + ripple::uint256("0000000000000000000000000000000000000000000800000000000000000000"), + ripple::uint256("0000000000000000000000000000000000000000001000000000000000000000"), + ripple::uint256("0000000000000000000000000000000000000000002000000000000000000000"), + ripple::uint256("0000000000000000000000000000000000000000004000000000000000000000"), + ripple::uint256("0000000000000000000000000000000000000000008000000000000000000000"), + ripple::uint256("0000000000000000000000000000000000000000010000000000000000000000"), + ripple::uint256("0000000000000000000000000000000000000000020000000000000000000000"), + ripple::uint256("0000000000000000000000000000000000000000040000000000000000000000"), + ripple::uint256("0000000000000000000000000000000000000000080000000000000000000000"), + ripple::uint256("0000000000000000000000000000000000000000100000000000000000000000"), + ripple::uint256("0000000000000000000000000000000000000000200000000000000000000000"), + ripple::uint256("0000000000000000000000000000000000000000400000000000000000000000"), + ripple::uint256("0000000000000000000000000000000000000000800000000000000000000000"), + ripple::uint256("0000000000000000000000000000000000000001000000000000000000000000"), + ripple::uint256("0000000000000000000000000000000000000002000000000000000000000000"), + ripple::uint256("0000000000000000000000000000000000000004000000000000000000000000"), + ripple::uint256("0000000000000000000000000000000000000008000000000000000000000000"), + ripple::uint256("0000000000000000000000000000000000000010000000000000000000000000"), + ripple::uint256("0000000000000000000000000000000000000020000000000000000000000000"), + ripple::uint256("0000000000000000000000000000000000000040000000000000000000000000"), + ripple::uint256("0000000000000000000000000000000000000080000000000000000000000000"), + ripple::uint256("0000000000000000000000000000000000000100000000000000000000000000"), + ripple::uint256("0000000000000000000000000000000000000200000000000000000000000000"), + ripple::uint256("0000000000000000000000000000000000000400000000000000000000000000"), + ripple::uint256("0000000000000000000000000000000000000800000000000000000000000000"), + ripple::uint256("0000000000000000000000000000000000001000000000000000000000000000"), + ripple::uint256("0000000000000000000000000000000000002000000000000000000000000000"), + ripple::uint256("0000000000000000000000000000000000004000000000000000000000000000"), + ripple::uint256("0000000000000000000000000000000000008000000000000000000000000000"), + ripple::uint256("0000000000000000000000000000000000010000000000000000000000000000"), + ripple::uint256("0000000000000000000000000000000000020000000000000000000000000000"), + ripple::uint256("0000000000000000000000000000000000040000000000000000000000000000"), + ripple::uint256("0000000000000000000000000000000000080000000000000000000000000000"), + ripple::uint256("0000000000000000000000000000000000100000000000000000000000000000"), + ripple::uint256("0000000000000000000000000000000000200000000000000000000000000000"), + ripple::uint256("0000000000000000000000000000000000400000000000000000000000000000"), + ripple::uint256("0000000000000000000000000000000000800000000000000000000000000000"), + ripple::uint256("0000000000000000000000000000000001000000000000000000000000000000"), + ripple::uint256("0000000000000000000000000000000002000000000000000000000000000000"), + ripple::uint256("0000000000000000000000000000000004000000000000000000000000000000"), + ripple::uint256("0000000000000000000000000000000008000000000000000000000000000000"), + ripple::uint256("0000000000000000000000000000000010000000000000000000000000000000"), + ripple::uint256("0000000000000000000000000000000020000000000000000000000000000000"), + ripple::uint256("0000000000000000000000000000000040000000000000000000000000000000"), + ripple::uint256("0000000000000000000000000000000080000000000000000000000000000000"), + ripple::uint256("0000000000000000000000000000000100000000000000000000000000000000"), + ripple::uint256("0000000000000000000000000000000200000000000000000000000000000000"), + ripple::uint256("0000000000000000000000000000000400000000000000000000000000000000"), + ripple::uint256("0000000000000000000000000000000800000000000000000000000000000000"), + ripple::uint256("0000000000000000000000000000001000000000000000000000000000000000"), + ripple::uint256("0000000000000000000000000000002000000000000000000000000000000000"), + ripple::uint256("0000000000000000000000000000004000000000000000000000000000000000"), + ripple::uint256("0000000000000000000000000000008000000000000000000000000000000000"), + ripple::uint256("0000000000000000000000000000010000000000000000000000000000000000"), + ripple::uint256("0000000000000000000000000000020000000000000000000000000000000000"), + ripple::uint256("0000000000000000000000000000040000000000000000000000000000000000"), + ripple::uint256("0000000000000000000000000000080000000000000000000000000000000000"), + ripple::uint256("0000000000000000000000000000100000000000000000000000000000000000"), + ripple::uint256("0000000000000000000000000000200000000000000000000000000000000000"), + ripple::uint256("0000000000000000000000000000400000000000000000000000000000000000"), + ripple::uint256("0000000000000000000000000000800000000000000000000000000000000000"), + ripple::uint256("0000000000000000000000000001000000000000000000000000000000000000"), + ripple::uint256("0000000000000000000000000002000000000000000000000000000000000000"), + ripple::uint256("0000000000000000000000000004000000000000000000000000000000000000"), + ripple::uint256("0000000000000000000000000008000000000000000000000000000000000000"), + ripple::uint256("0000000000000000000000000010000000000000000000000000000000000000"), + ripple::uint256("0000000000000000000000000020000000000000000000000000000000000000"), + ripple::uint256("0000000000000000000000000040000000000000000000000000000000000000"), + ripple::uint256("0000000000000000000000000080000000000000000000000000000000000000"), + ripple::uint256("0000000000000000000000000100000000000000000000000000000000000000"), + ripple::uint256("0000000000000000000000000200000000000000000000000000000000000000"), + ripple::uint256("0000000000000000000000000400000000000000000000000000000000000000"), + ripple::uint256("0000000000000000000000000800000000000000000000000000000000000000"), + ripple::uint256("0000000000000000000000001000000000000000000000000000000000000000"), + ripple::uint256("0000000000000000000000002000000000000000000000000000000000000000"), + ripple::uint256("0000000000000000000000004000000000000000000000000000000000000000"), + ripple::uint256("0000000000000000000000008000000000000000000000000000000000000000"), + ripple::uint256("0000000000000000000000010000000000000000000000000000000000000000"), + ripple::uint256("0000000000000000000000020000000000000000000000000000000000000000"), + ripple::uint256("0000000000000000000000040000000000000000000000000000000000000000"), + ripple::uint256("0000000000000000000000080000000000000000000000000000000000000000"), + ripple::uint256("0000000000000000000000100000000000000000000000000000000000000000"), + ripple::uint256("0000000000000000000000200000000000000000000000000000000000000000"), + ripple::uint256("0000000000000000000000400000000000000000000000000000000000000000"), + ripple::uint256("0000000000000000000000800000000000000000000000000000000000000000"), + ripple::uint256("0000000000000000000001000000000000000000000000000000000000000000"), + ripple::uint256("0000000000000000000002000000000000000000000000000000000000000000"), + ripple::uint256("0000000000000000000004000000000000000000000000000000000000000000"), + ripple::uint256("0000000000000000000008000000000000000000000000000000000000000000"), + ripple::uint256("0000000000000000000010000000000000000000000000000000000000000000"), + ripple::uint256("0000000000000000000020000000000000000000000000000000000000000000"), + ripple::uint256("0000000000000000000040000000000000000000000000000000000000000000"), + ripple::uint256("0000000000000000000080000000000000000000000000000000000000000000"), + ripple::uint256("0000000000000000000100000000000000000000000000000000000000000000"), + ripple::uint256("0000000000000000000200000000000000000000000000000000000000000000"), + ripple::uint256("0000000000000000000400000000000000000000000000000000000000000000"), + ripple::uint256("0000000000000000000800000000000000000000000000000000000000000000"), + ripple::uint256("0000000000000000001000000000000000000000000000000000000000000000"), + ripple::uint256("0000000000000000002000000000000000000000000000000000000000000000"), + ripple::uint256("0000000000000000004000000000000000000000000000000000000000000000"), + ripple::uint256("0000000000000000008000000000000000000000000000000000000000000000"), + ripple::uint256("0000000000000000010000000000000000000000000000000000000000000000"), + ripple::uint256("0000000000000000020000000000000000000000000000000000000000000000"), + ripple::uint256("0000000000000000040000000000000000000000000000000000000000000000"), + ripple::uint256("0000000000000000080000000000000000000000000000000000000000000000"), + ripple::uint256("0000000000000000100000000000000000000000000000000000000000000000"), + ripple::uint256("0000000000000000200000000000000000000000000000000000000000000000"), + ripple::uint256("0000000000000000400000000000000000000000000000000000000000000000"), + ripple::uint256("0000000000000000800000000000000000000000000000000000000000000000"), + ripple::uint256("0000000000000001000000000000000000000000000000000000000000000000"), + ripple::uint256("0000000000000002000000000000000000000000000000000000000000000000"), + ripple::uint256("0000000000000004000000000000000000000000000000000000000000000000"), + ripple::uint256("0000000000000008000000000000000000000000000000000000000000000000"), + ripple::uint256("0000000000000010000000000000000000000000000000000000000000000000"), + ripple::uint256("0000000000000020000000000000000000000000000000000000000000000000"), + ripple::uint256("0000000000000040000000000000000000000000000000000000000000000000"), + ripple::uint256("0000000000000080000000000000000000000000000000000000000000000000"), + ripple::uint256("0000000000000100000000000000000000000000000000000000000000000000"), + ripple::uint256("0000000000000200000000000000000000000000000000000000000000000000"), + ripple::uint256("0000000000000400000000000000000000000000000000000000000000000000"), + ripple::uint256("0000000000000800000000000000000000000000000000000000000000000000"), + ripple::uint256("0000000000001000000000000000000000000000000000000000000000000000"), + ripple::uint256("0000000000002000000000000000000000000000000000000000000000000000"), + ripple::uint256("0000000000004000000000000000000000000000000000000000000000000000"), + ripple::uint256("0000000000008000000000000000000000000000000000000000000000000000"), + ripple::uint256("0000000000010000000000000000000000000000000000000000000000000000"), + ripple::uint256("0000000000020000000000000000000000000000000000000000000000000000"), + ripple::uint256("0000000000040000000000000000000000000000000000000000000000000000"), + ripple::uint256("0000000000080000000000000000000000000000000000000000000000000000"), + ripple::uint256("0000000000100000000000000000000000000000000000000000000000000000"), + ripple::uint256("0000000000200000000000000000000000000000000000000000000000000000"), + ripple::uint256("0000000000400000000000000000000000000000000000000000000000000000"), + ripple::uint256("0000000000800000000000000000000000000000000000000000000000000000"), + ripple::uint256("0000000001000000000000000000000000000000000000000000000000000000"), + ripple::uint256("0000000002000000000000000000000000000000000000000000000000000000"), + ripple::uint256("0000000004000000000000000000000000000000000000000000000000000000"), + ripple::uint256("0000000008000000000000000000000000000000000000000000000000000000"), + ripple::uint256("0000000010000000000000000000000000000000000000000000000000000000"), + ripple::uint256("0000000020000000000000000000000000000000000000000000000000000000"), + ripple::uint256("0000000040000000000000000000000000000000000000000000000000000000"), + ripple::uint256("0000000080000000000000000000000000000000000000000000000000000000"), + ripple::uint256("0000000100000000000000000000000000000000000000000000000000000000"), + ripple::uint256("0000000200000000000000000000000000000000000000000000000000000000"), + ripple::uint256("0000000400000000000000000000000000000000000000000000000000000000"), + ripple::uint256("0000000800000000000000000000000000000000000000000000000000000000"), + ripple::uint256("0000001000000000000000000000000000000000000000000000000000000000"), + ripple::uint256("0000002000000000000000000000000000000000000000000000000000000000"), + ripple::uint256("0000004000000000000000000000000000000000000000000000000000000000"), + ripple::uint256("0000008000000000000000000000000000000000000000000000000000000000"), + ripple::uint256("0000010000000000000000000000000000000000000000000000000000000000"), + ripple::uint256("0000020000000000000000000000000000000000000000000000000000000000"), + ripple::uint256("0000040000000000000000000000000000000000000000000000000000000000"), + ripple::uint256("0000080000000000000000000000000000000000000000000000000000000000"), + ripple::uint256("0000100000000000000000000000000000000000000000000000000000000000"), + ripple::uint256("0000200000000000000000000000000000000000000000000000000000000000"), + ripple::uint256("0000400000000000000000000000000000000000000000000000000000000000"), + ripple::uint256("0000800000000000000000000000000000000000000000000000000000000000"), + ripple::uint256("0001000000000000000000000000000000000000000000000000000000000000"), + ripple::uint256("0002000000000000000000000000000000000000000000000000000000000000"), + ripple::uint256("0004000000000000000000000000000000000000000000000000000000000000"), + ripple::uint256("0008000000000000000000000000000000000000000000000000000000000000"), + ripple::uint256("0010000000000000000000000000000000000000000000000000000000000000"), + ripple::uint256("0020000000000000000000000000000000000000000000000000000000000000"), + ripple::uint256("0040000000000000000000000000000000000000000000000000000000000000"), + ripple::uint256("0080000000000000000000000000000000000000000000000000000000000000"), + ripple::uint256("0100000000000000000000000000000000000000000000000000000000000000"), + ripple::uint256("0200000000000000000000000000000000000000000000000000000000000000"), + ripple::uint256("0400000000000000000000000000000000000000000000000000000000000000"), + ripple::uint256("0800000000000000000000000000000000000000000000000000000000000000"), + ripple::uint256("1000000000000000000000000000000000000000000000000000000000000000"), + ripple::uint256("2000000000000000000000000000000000000000000000000000000000000000"), + ripple::uint256("4000000000000000000000000000000000000000000000000000000000000000"), + ripple::uint256("8000000000000000000000000000000000000000000000000000000000000000") + }; +} +#endif diff --git a/src/ripple/app/hook/applyHook.h b/src/ripple/app/hook/applyHook.h index 24276f6bb..b40bceea7 100644 --- a/src/ripple/app/hook/applyHook.h +++ b/src/ripple/app/hook/applyHook.h @@ -14,6 +14,7 @@ #include #include #include +#include #include namespace hook