HomePhabricator

Merge #13603: bitcoin-tx: Stricter check for valid integers

Description

Merge #13603: bitcoin-tx: Stricter check for valid integers

Summary:
57889e688dd0987a1e087cd48d216a413127601e bitcoin-tx: Stricter check for valid integers (Daniel Kraft)

Pull request description:

Just calling `atoi` to convert strings to integers does not check for valid integers very thoroughly; in particular, it just ignores everything starting from the first non-numeral character.  Even a string like "foo" is fine and silently returns 0.

This meant that `bitcoin-tx` would not fail if such a string was passed in various places where an integer is expected (like the `locktime` or an input/output index); this means that it would, for instance, silently accept a typo and interpret it in an unexpected way.

In this change, we use `ParseInt64` for parsing strings to integers, which actually verifies that the full string is valid as number.  New tests in the `bitcoin-util-test` cover the new error paths.

This fixes #13599.

Tree-SHA512: 146a0af275e9f57784e5d0582d3defbac35551b54b6b7232f8a0b20db04aa611125e52aa4512ef2f8ed2cafc2a12fe586f9d10ed66d641cff090288f279b1988

Backport of Core PR13603
https://github.com/bitcoin/bitcoin/pull/13603/

Review note: one test case is excluded (see https://github.com/bitcoin/bitcoin/pull/13603/files#diff-56081e3ccaa6b59f0fbd1c2e34b95a49R105) because we do not support the replaceable option for bitcoin-tx.

Test Plan:

make check

Reviewers: deadalnix, Fabien, jasonbcox, O1 Bitcoin ABC, #bitcoin_abc

Reviewed By: deadalnix, O1 Bitcoin ABC, #bitcoin_abc

Differential Revision: https://reviews.bitcoinabc.org/D4663

Details

Provenance
Wladimir J. van der Laan <laanwj@gmail.com>Authored on Jul 9 2018, 17:56
nakihitoCommitted on Dec 9 2019, 18:21
nakihitoPushed on Dec 9 2019, 18:21
Reviewer
Restricted Owners Package
Differential Revision
D4663: Merge #13603: bitcoin-tx: Stricter check for valid integers
Parents
rABC4e65d88e3a16: [move only] Move BIP70 code together in preparation to backport PR14451 BIP70…
Branches
Unknown
Tags
Unknown