Don't allow Base32/64-decoding or ParseMoney(…) on strings with embedded NUL characters. Add tests.
Added tests before:
$ src/test/test_bitcoin
Running 385 test cases...
test/base32_tests.cpp(31): error: in "base32_tests/base32_testvectors":
check failure == true has failed [false != true]
test/base64_tests.cpp(31): error: in "base64_tests/base64_testvectors":
check failure == true has failed [false != true]
test/util_tests.cpp(1074): error: in "util_tests/util_ParseMoney":
check !ParseMoney(std::string("\0-1", 3), ret) has failed
test/util_tests.cpp(1076): error: in "util_tests/util_ParseMoney":
check !ParseMoney(std::string("1\0", 2), ret) has failed
*** 4 failures are detected in the test module "Bitcoin Core Test Suite"
Added tests after:
$ src/test/test_bitcoin
Running 385 test cases...
*** No errors detected