bitcoin/src/util
MarcoFalke 5e33620ad8
Merge bitcoin/bitcoin#24371: util: Fix ReadBinaryFile reading beyond maxsize
a84650ebd5 util: Fix ReadBinaryFile reading beyond maxsize (klementtan)

Pull request description:

  Currently `ReadBinaryFile` will read beyond `maxsize` if `maxsize` is not a multiple of `128` (size of buffer)

  This is due to `fread` being called with `count = 128` instead of `count = min(128, maxsize - retval.size()` at every iteration

  The following unit test will fail:
  ```cpp
  BOOST_AUTO_TEST_CASE(util_ReadWriteFile)
  {
    fs::path tmpfolder = m_args.GetDataDirBase();
    fs::path tmpfile = tmpfolder / "read_binary.dat";
    std::string expected_text(300,'c');
    {
        std::ofstream file{tmpfile};
        file << expected_text;
    }
    {
        // read half the contents in file
        auto [valid, text] = ReadBinaryFile(tmpfile, expected_text.size() / 2);
        BOOST_CHECK_EQUAL(text.size(), 150);
    }
  }
  ```
  Error:
  ```
  test/util_tests.cpp:2593: error: in "util_tests/util_ReadWriteFile": check text.size() == 150 has failed [256 != 150]
  ```

ACKs for top commit:
  laanwj:
    Code review ACK a84650ebd5
  theStack:
    Code-review ACK a84650ebd5

Tree-SHA512: 752eebe58bc2102dec199b6775f8c3304d899f0ce36d6a022a58e27b076ba945ccd572858b19137b769effd8c6de73a9277f641be24dfb17657fb7173ea0eda0
2022-03-10 10:24:05 +01:00
..
asmap.cpp refactor: replace boost::filesystem with std::filesystem 2022-02-03 18:35:52 +08:00
asmap.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
bip32.cpp scripted-diff: Bump copyright headers 2020-04-16 13:33:09 -04:00
bip32.h scripted-diff: Use [[nodiscard]] (C++17) instead of NODISCARD 2020-11-26 09:05:59 +00:00
bytevectorhash.cpp blockfilter: Use unordered_set instead of set in blockfilter. 2018-11-05 09:30:56 -08:00
bytevectorhash.h blockfilter: Use unordered_set instead of set in blockfilter. 2018-11-05 09:30:56 -08:00
check.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
epochguard.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
error.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
error.h rpc: send: support external signer 2021-02-23 14:34:32 +01:00
fastrange.h Add FastRange32 function and use it throughout the codebase 2022-01-07 13:37:47 -05:00
fees.cpp scripted-diff: Bump copyright headers 2020-12-31 09:45:41 +01:00
fees.h scripted-diff: Bump copyright headers 2020-12-31 09:45:41 +01:00
getuniquepath.cpp doc: add missing copyright header to getuniquepath.cpp 2021-09-08 16:28:21 +08:00
getuniquepath.h Introduce GetUniquePath(base) helper method to replace boost::filesystem::unique_path() which is not available in std::filesystem. 2021-02-04 11:38:09 +01:00
golombrice.h [moveonly] Move MapIntoRange() to separate util/fastrange.h 2022-01-06 11:27:06 -05:00
hash_type.h move-only: Add util/hash_type 2021-05-11 10:38:18 +02:00
hasher.cpp Add generic SaltedSipHasher 2020-11-10 14:33:37 -05:00
hasher.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
macros.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
message.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
message.h Move direct calls to MessageSign into new SignMessage functions in CWallet and ScriptPubKeyMan 2020-03-09 11:16:20 -04:00
moneystr.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
moneystr.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
overflow.h util: Add SaturatingAdd helper 2022-02-21 14:32:53 +01:00
overloaded.h refactor: Make CWalletTx sync state type-safe 2021-11-15 09:11:44 -05:00
rbf.cpp scripted-diff: Bump copyright of files changed in 2019 2019-12-30 10:42:20 +13:00
rbf.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
readwritefile.cpp util: Fix ReadBinaryFile reading beyond maxsize 2022-02-19 18:39:43 +08:00
readwritefile.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
serfloat.cpp Add platform-independent float encoder/decoder 2021-05-24 16:04:44 -07:00
serfloat.h Add platform-independent float encoder/decoder 2021-05-24 16:04:44 -07:00
settings.cpp refactor: replace boost::filesystem with std::filesystem 2022-02-03 18:35:52 +08:00
settings.h Add <datadir>/settings.json persistent settings storage. 2020-07-11 05:41:12 -04:00
sock.cpp net: add new method Sock::Accept() that wraps accept() 2021-12-01 15:22:08 +01:00
sock.h net: add new method Sock::Accept() that wraps accept() 2021-12-01 15:22:08 +01:00
spanparsing.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
spanparsing.h scripted-diff: Bump copyright of files changed in 2019 2019-12-30 10:42:20 +13:00
strencodings.cpp Merge bitcoin/bitcoin#24297: Fix unintended unsigned integer overflow in strencodings 2022-02-10 07:17:32 +00:00
strencodings.h util: Restore GetIntArg saturating behavior 2022-01-11 19:54:36 -05:00
string.cpp util: Add Join helper to join a list of strings 2019-08-20 16:51:41 -04:00
string.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
syscall_sandbox.cpp util: Add missing rseq to syscall sandbox 2022-02-17 15:01:43 +01:00
syscall_sandbox.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
system.cpp qt: Avoid crash on startup if int specified in settings.json 2022-03-07 13:29:46 -05:00
system.h util: Add GetPathArg default path argument 2022-03-02 06:09:27 -05:00
thread.cpp refactor: Make TraceThread a non-template free function 2021-04-25 12:28:44 +03:00
thread.h refactor: Make TraceThread a non-template free function 2021-04-25 12:28:44 +03:00
threadnames.cpp scripted-diff: Bump copyright of files changed in 2019 2019-12-30 10:42:20 +13:00
threadnames.h scripted-diff: Bump copyright of files changed in 2019 2019-12-30 10:42:20 +13:00
time.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
time.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
tokenpipe.cpp refactor: post Optional<> removal cleanups 2021-03-17 14:56:20 +08:00
tokenpipe.h util: Add RAII TokenPipe 2021-03-04 18:24:00 +01:00
trace.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
translation.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
types.h Add util/types.h with ALWAYS_FALSE template 2021-09-07 19:19:02 +02:00
ui_change_type.h wallet: Do not include server symbols 2020-06-27 11:39:09 -04:00
url.cpp scripted-diff: Bump copyright of files changed in 2019 2019-12-30 10:42:20 +13:00
url.h scripted-diff: Bump copyright headers 2020-04-16 13:33:09 -04:00
vector.h Add some general std::vector utility functions 2019-10-16 08:56:57 -07:00