Commit graph

21573 commits

Author SHA1 Message Date
Hennadii Stepanov
ecd094e2b1
Use ArgsManager::GetPathArg() for "-walletdir" option 2022-02-09 19:31:23 +02:00
Hennadii Stepanov
06fed4c21e
Use ArgsManager::GetPathArg() for "-blocksdir" option 2022-02-09 19:31:23 +02:00
Hennadii Stepanov
15b632bf16
Use ArgsManager::GetPathArg() for "-datadir" option 2022-02-09 19:31:22 +02:00
Hennadii Stepanov
540ca5111f
util: Add ArgsManager::GetPathArg() function
Co-authored-by: Ryan Ofsky <ryan@ofsky.org>
2022-02-09 19:31:16 +02:00
Jon Atack
ae9ceed3e2
validation, refactoring: remove ChainstateManager::Reset()
Co-authored-by: Vasil Dimov <vd@FreeBSD.org>
Co-authored-by: laanwj <126646+laanwj@users.noreply.github.com>
2022-02-09 18:04:54 +01:00
MarcoFalke
fa1b89a6bd
scripted-diff: Rename nReadPos to m_read_pos in streams.h
-BEGIN VERIFY SCRIPT-
 sed -i 's/nReadPos/m_read_pos/g' ./src/streams.h
-END VERIFY SCRIPT-
2022-02-09 17:21:04 +01:00
MarcoFalke
fa56c79df9
Make CDataStream work properly on 64-bit systems 2022-02-09 17:21:01 +01:00
MarcoFalke
fab02f7991
streams: Fix read-past-the-end and integer overflows 2022-02-09 17:20:22 +01:00
laanwj
5e8e0b3d7f
Merge bitcoin/bitcoin#24253: Remove broken and unused CDataStream methods
fa1b227a72 Remove broken and unused CDataStream methods (MarcoFalke)
faee5f8dc2 test: Create fresh CDataStream each time (MarcoFalke)
fa71114926 test: Inline expected_xor (MarcoFalke)

Pull request description:

  The `insert` and `erase` methods have many issues:

  * They are unused
  * They are confusing and hard to read, as they implement "special cases" for optimization, that isn't needed
  * They are broken (See https://github.com/bitcoin/bitcoin/pull/24231)
  * Fixing them leads to mingw compile errors (See https://github.com/bitcoin/bitcoin/pull/24231#issuecomment-1029286985)

  Fix all issues by removing them

ACKs for top commit:
  laanwj:
    Code review ACK fa1b227a72

Tree-SHA512: 9d9e5d42e6ffc5ae82bdb67cfb5b50b45977ae674acee6ff99092560aebf2fc7e4584ded614e190db0663226fa198e34350517cd7ee57d518de22e9568bc349a
2022-02-09 16:04:43 +01:00
Jon Atack
daad0093e3
validation: replace lock with annotation in UnloadBlockIndex() 2022-02-09 15:38:36 +01:00
MarcoFalke
fa2f7d0059
fuzz: Avoid unsigned integer overflow in FormatParagraph 2022-02-09 14:38:22 +01:00
MarcoFalke
fac9fe5d05
Fix unintended unsigned integer overflow in strencodings 2022-02-09 13:24:55 +01:00
MarcoFalke
8ac79973f8
Merge bitcoin/bitcoin#24196: Fix integer sanitizer suppressions in validation.cpp
fac62056b5 Fix integer sanitizer suppressions in validation.cpp (MarcoFalke)

Pull request description:

  It doesn't seem ideal to have an integer sanitizer enabled, but then disable it for the whole validation.cpp file.

  Fix it with a refactor and remove the suppression.

ACKs for top commit:
  hebasto:
    ACK fac62056b5, I have reviewed the code and it looks OK, I agree it can be merged.
  prayank23:
    Code Review ACK fac62056b5

Tree-SHA512: efc5b9887cb2e207033b264ebf425bae5ff013e909701c049aea5d79a21f10495826e962d171b3d412717cbf0a4723e5124133b5401b35a73915212e85e91020
2022-02-09 08:30:38 +01:00
Hennadii Stepanov
b7942c9482
Merge bitcoin-core/gui#404: Fix various edge case bugs in QValidatedLineEdit
aeb18b665c Bugfix: GUI: Check validity when QValidatedLineEdit::setText is called (Luke Dashjr)
b1a544be10 Bugfix: GUI: Re-check validity after QValidatedLineEdit::setCheckValidator (Luke Dashjr)
2385b508d5 Bugfix: GUI: Only apply invalid style to QValidatedLineEdit, not its tooltip (Luke Dashjr)

Pull request description:

  1. Use a CSS selector to avoid changing the background colour of the tooltip.
  2. Re-check validity of input when we first set the validator (probably a no-op in practice).
  3. Check validity of input when it is set programmatically via `setText` (eg, via the address book). Probably no-op in practice UNTIL merging https://github.com/bitcoin/bitcoin/pull/15987 or any other PR that adds a warning for valid addresses.

  Moved from https://github.com/bitcoin/bitcoin/pull/18133 (just concept ACKs)

ACKs for top commit:
  Sjors:
    tACK aeb18b665c
  hebasto:
    ACK aeb18b665c, tested on Linux Mint 20.3 (Qt 5.12.8).

Tree-SHA512: b6fa8ee4dec76e1c759095721240e6fa5071a02993cb28406e96a0fa2e819f5dddc03d2e7c9073354d7865c2b09eb263afaf853ecba42e9fc4f50ef4ae20bf0f
2022-02-09 06:23:44 +02:00
Hennadii Stepanov
58e16035c1
qt, refactor: Drop BitcoinGUI::{send,receive}CoinsMenuAction members 2022-02-08 18:41:42 +02:00
Hennadii Stepanov
fd667e73cd
qt: Make show_hide_action dependent on the main window actual state 2022-02-08 18:41:41 +02:00
Hennadii Stepanov
ee151d0327
qt: Drop BitcoinGUI::toggleHideAction member
Also dropped useless tooltip.
2022-02-08 18:41:41 +02:00
Hennadii Stepanov
78189daac8
qt, refactor: Fill up trayIconMenu before connections
This change is required for the following commits.
2022-02-08 18:41:29 +02:00
MarcoFalke
280a7777d3
Merge bitcoin/bitcoin#24235: validation: use stronger EXCLUSIVE_LOCKS_REQUIRED()
99de8068cd validation: use stronger EXCLUSIVE_LOCKS_REQUIRED() (Vasil Dimov)

Pull request description:

  https://github.com/bitcoin/bitcoin/pull/24103 added annotations to
  denote that the callers of `CChainState::ActivateBestChain()` and
  `CChainState::InvalidateBlock()` must not own `m_chainstate_mutex` at
  the time of the call.

  Replace the added `LOCKS_EXCLUDED()` with a stronger
  `EXCLUSIVE_LOCKS_REQUIRED()`, see
  https://clang.llvm.org/docs/ThreadSafetyAnalysis.html#negative for the
  difference between both.

ACKs for top commit:
  hebasto:
    ACK 99de8068cd.
  jonatack:
    ACK 99de8068cd. Tested with Debian clang version 13.0.1.  Reproduced hebasto's results. Verified that  `LoadExternalBlockFile()` needs the annotation added here.

Tree-SHA512: 59640d9ad472cdb5066ecde89cc0aff8632a351fc030f39bb43800d2c856fb1aed3576e4134212d32be161b18780f06dc5066ac71df7f7cd69e3f21f886e1542
2022-02-08 15:53:49 +01:00
MarcoFalke
8edb0416dd
Merge bitcoin/bitcoin#24266: util: Avoid buggy std::filesystem:::create_directories() call
b9c113af75 util: Avoid buggy std::filesystem:::create_directories() call (Hennadii Stepanov)

Pull request description:

  Compiled with some libstdc++ versions (e.g., on Ubuntu 20.04) [`std::filesystem:::create_directories()`](https://en.cppreference.com/w/cpp/filesystem/create_directory) call [fails](https://github.com/bitcoin/bitcoin/issues/24257#issue-1123753243) to handle symbol links properly.

  No behavior change in comparison to the [pre-20744](c194293883) master branch.

  Fixes bitcoin/bitcoin#24257.

ACKs for top commit:
  ryanofsky:
    Code review ACK b9c113af75. Nice simplification and fix
  MarcoFalke:
    review ACK b9c113af75 🐬

Tree-SHA512: 79d940cfc1f68d9b0548fb2ab005e90850b54ac0fb3bb2940afd632d56288d92687579a3176bac3fd0ea3d2dae71e26444f8f7bdb87862414c12866ae5e857c4
2022-02-08 15:46:34 +01:00
Hennadii Stepanov
66afa286e5
qt, refactor: Replace BitcoinGUI::trayIconActivated with a lambda 2022-02-08 16:21:45 +02:00
Hennadii Stepanov
c3ca8364b2
qt, refactor: Replace BitcoinGUI::macosDockIconActivated with a lambda 2022-02-08 16:19:12 +02:00
MarcoFalke
fac62056b5
Fix integer sanitizer suppressions in validation.cpp 2022-02-07 15:20:36 +01:00
MarcoFalke
f7a36477a6
Merge bitcoin/bitcoin#24227: Fix unsigned integer overflow in LoadMempool
fadcd03139 Fix unsigned integer overflow in LoadMempool (MarcoFalke)

Pull request description:

  It doesn't seem ideal to have an integer sanitizer enabled, but then disable it for the whole validation.cpp file.

  This removes one of the two violations.

  This should be a refactor.

ACKs for top commit:
  prayank23:
    Code Review ACK fadcd03139

Tree-SHA512: 9fb2f3d49008a59cd45b7c17be0c88c04e61183197c11c8176865af5532c8d0c940db49a351dd0fc75e1d7fd8678c3b816d34cfca170dc6b9cf8f37fdf1c8cae
2022-02-07 14:06:33 +01:00
MarcoFalke
fa65f26f4d
Merge bitcoin/bitcoin#24237: test: Avoid testing negative block heights
fad81548fa test: Avoid testing negative block heights (MarcoFalke)

Pull request description:

  A negative chain height is only used to denote an empty chain, not the height of any block.

  So stop testing that and remove a suppression.

ACKs for top commit:
  brunoerg:
    crACK fad81548fa

Tree-SHA512: 0f9e91617dfb6ceda99831e6cf4b4bf0d951054957c159b1a05a178ab6090798fae7368edefe12800da24585bcdf7299ec3534f4d3bbf5ce6a6eca74dd3bb766
2022-02-07 14:03:56 +01:00
MarcoFalke
5034b7fa3b
Merge bitcoin/bitcoin#24217: Fix unsigned integer overflow in tapscript validation weight calculation
fadc54b79b Fix unsigned integer overflow in tapscript validation weight calculation (MarcoFalke)

Pull request description:

  Change the tapscript validation weight constants from uint64_t to int64_t, since the type of m_validation_weight_left is also int64_t. Otherwise this will cause sanitizer warnings.

  This should be safe because signed integer overflow isn't expected to happen.

ACKs for top commit:
  PastaPastaPasta:
    utACK fadc54b79b
  theStack:
    Code-review ACK fadc54b79b

Tree-SHA512: 7a62d3a84733ab7827e3fa50d83f5493f2481b725c587e986eb2c128a769f023756f3ad964401526e386a847aa630a9f6c43a57d25ce5fd4af0b6bb5e0615528
2022-02-07 09:26:35 +01:00
Hennadii Stepanov
956f7322f6
build: Bump minimum Qt version to 5.11.3 2022-02-05 23:53:46 +02:00
Hennadii Stepanov
b9c113af75
util: Avoid buggy std::filesystem:::create_directories() call
Compiled with some libstdc++ versions (e.g., on Ubuntu 20.04)
std::filesystem:::create_directories() call fails to handle symbol links
properly.
2022-02-05 18:32:39 +02:00
fanquake
1e7564eca8
Merge bitcoin/bitcoin#24251: Re-enable windows path tests disabled by #20744
d216bc8d76 Re-enable walletinit_verify_walletdir_no_trailing2 test disabled in #20744 (Ryan Ofsky)
80cd64e842 Re-enable util_datadir check disabled in #20744 (Ryan Ofsky)

Pull request description:

  Reenable some broken tests as discussed https://github.com/bitcoin/bitcoin/pull/20744#discussion_r798651736 and https://github.com/bitcoin/bitcoin/pull/20744#discussion_r798678137

  Fix windows test cases broken in #20744, by passing normalized path arguments to fs::equivalent, fs::exists, and fs::is_directory, instead of non-normalized arguments. Also re-enable the tests.

  It is possible these changes also fix real init behavior on windows when -datadir or -walletdir paths with trailing dots or dashes are used, but it's not clear because I only tested on wine.

ACKs for top commit:
  hebasto:
    ACK d216bc8d76, I have reviewed the code and it looks OK, I agree it can be merged.

Tree-SHA512: 2099ddfa1a3ad70f7ac2ff413929414a1851d257b280da25c0f5cefb46fd1372b580a1f1ee5280681a1c16e6031f119185cadd4f7a6121298562cf001f711068
2022-02-05 20:02:41 +08:00
fanquake
372cb6c186
Merge bitcoin/bitcoin#24252: bench: Represent paths with fs::path instead of std::string
824e1ffa9f bench: Represents paths with fs::path instead of std::string (Ryan Ofsky)

Pull request description:

  Suggested https://github.com/bitcoin/bitcoin/pull/20744#issuecomment-1022486215

ACKs for top commit:
  fanquake:
    untested ACK 824e1ffa9f
  hebasto:
    ACK 824e1ffa9f, tested on Linux Mint 20.2 (x86_64).

Tree-SHA512: 348fc189f30b5ad9a8e49e95e535d2c044462a9d534c3f34d887fbde0c05c41e88e02b4fc340709e6395a1188496a8333eb9e734310aa4c41755ec080e53c06e
2022-02-05 10:58:35 +08:00
fanquake
4382d09896
Update minisketch subtree to latest upstream 2022-02-04 22:47:49 +08:00
fanquake
8fcb19fb47 Squashed 'src/minisketch/' changes from 89629eb2c7..7eeb778fef
7eeb778fef Merge sipa/minisketch#58: Move `#ifdef HAVE_CLMUL` guard outside of the EnableClmul definition
4d9db2b897 Move `#ifdef HAVE_CLMUL` guard outside of the EnableClmul definition

git-subtree-dir: src/minisketch
git-subtree-split: 7eeb778fef45e21abca01ede85cf0a82e8a510df
2022-02-04 22:47:49 +08:00
Ryan Ofsky
824e1ffa9f bench: Represents paths with fs::path instead of std::string
Also uses fs::path quoting in bench printed strings and fixes a
misleading error message.

Originally suggested https://github.com/bitcoin/bitcoin/pull/20744#issuecomment-1022486215

Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>
2022-02-04 09:33:41 -05:00
Ryan Ofsky
d216bc8d76 Re-enable walletinit_verify_walletdir_no_trailing2 test disabled in #20744
This should also fix an init error if a -walletdir with a trailing slash
is used on windows. This appears to be a real error and regression
introduced with #20744.

On windows (or at least wine), fs calls that actuallly access the
filesystem like fs::equivalent or fs::exists seem to treat directory
paths with trailing slashes as not existing, so it's necessary to
normalize these paths before using them. This change passes canonical
paths to fs calls validating the -walletdir path to fix this.
2022-02-04 09:10:19 -05:00
Ryan Ofsky
80cd64e842 Re-enable util_datadir check disabled in #20744
This should also fix an assert error if a -datadir with a trailing slash
is used on windows. This appears to be a real error and regression
introduced with #20744.

On windows (or at least wine), fs calls that actuallly access the
filesystem like fs::equivalent or fs::exists seem to treat directory
paths with trailing slashes as not existing, so it's necessary to
normalize these paths before using them. This fix adds a
path::lexically_normal() call to the failing assert so it passes.
2022-02-04 09:09:09 -05:00
laanwj
a5edd191be
Merge bitcoin/bitcoin#22151: build: Follow Transifex docs to prepare XLIFF source
985d85e9a8 Follow Transifex docs to prepare XLIFF source (Hennadii Stepanov)

Pull request description:

  This PR is a #21694 follow up.

  From the Transifex [docs](https://docs.transifex.com/formats/xliff#how-to-distinguish-between-a-source-file-and-a-translation-file):
  > A source file is different than a translation file. The translation file contains \<Target> references, whereas a source file does not.

  This PR makes the `qt/locale/bitcoin_en.xlf` source file according to the docs.

ACKs for top commit:
  laanwj:
    ACK 985d85e9a8

Tree-SHA512: 537ef78f39a12f094b17fc902c5b59c7ae4d27e5fa35fbf6b33386843e4521236dac3275ba26ff2d1c435e53e8942284644d5de67b0b3543cec96cbcd4351607
2022-02-04 13:43:36 +01:00
Hennadii Stepanov
5c6b3d5b35
Merge bitcoin-core/gui#524: Replace int with std::chrono in for the timer->setInterval() argument
f7a19ef774 qt,refactor: Use std::chrono in TrafficGraphWidget class (Shashwat)

Pull request description:

  The PR is a follow-up to #517

  - It addresses the change suggested in [this](https://github.com/bitcoin-core/gui/pull/517#pullrequestreview-850260826) comment.
  - This PR changes the type of `msecsPerSample` from **int** to **std::chrono::minutes** and makes other relevant subsequent changes that were limited to the **trafficgraphwidget** file.

ACKs for top commit:
  RandyMcMillan:
    tACK f7a19ef774
  hebasto:
    ACK f7a19ef774
  promag:
    Code review ACK f7a19ef774.

Tree-SHA512: 5094ba894f3051fc99148cb8f408fc6f9d6571188673dcb7bf24366cdfb3eaf6d4e41083685d578ad2a9fbe31cc491a5f3fa9b7c9ab6eb90e4dc1356f89ae18a
2022-02-04 12:39:07 +02:00
laanwj
515200298b
Merge bitcoin/bitcoin#24250: Update translations for 0.23 string freeze
04255073bb qt: Update source translations (laanwj)
cf79c56e65 init: Remove confusing '(possible integer overflow?)' from error message (laanwj)
d570a63894 qt: Update transifex resource blob to 23.0 (laanwj)

Pull request description:

  - Update translations for 0.23 string freeze
  - Update transifex resource blob to 23.0

  This is necessary before a 23.0 resource can be created on Transifex.

ACKs for top commit:
  hebasto:
    ACK 04255073bb

Tree-SHA512: ff886e92721f070e3c135cfec229c41848a67c02355b88f2a5a507241b545f4209167d83b561420c2a82f49a5994170b01dcfb95bfc3fe6b9c832abcc6547b14
2022-02-04 09:25:36 +01:00
laanwj
e8a3882e20
Merge bitcoin/bitcoin#23604: Use Sock in CNode
ef5014d256 style: wrap long lines in CNode creation and add some comments (Vasil Dimov)
b683491648 scripted-diff: rename CNode::cs_hSocket to CNode::m_sock_mutex (Vasil Dimov)
c41a1162ac net: use Sock in CNode (Vasil Dimov)
c5dd72e146 fuzz: move FuzzedSock earlier in src/test/fuzz/util.h (Vasil Dimov)

Pull request description:

  _This is a piece of #21878, chopped off to ease review._

  Change `CNode` to use a pointer to `Sock` instead of a bare `SOCKET`.
  This will help mocking / testing / fuzzing more code.

ACKs for top commit:
  jonatack:
    re-ACK ef5014d256 changes since last review are the removal of an unneeded dtor and the addition of a style commit
  w0xlt:
    reACK ef5014d
  PastaPastaPasta:
    utACK ef5014d256, I have reviewed the code, and believe it makes sense to merge
  theStack:
    Cod-review ACK ef5014d256

Tree-SHA512: 7f5414dd339cd2f16f7cbdc5fcec238d68b6d50072934aea10b901f409da28ff1ece6db6e899196616aa8127b8b25ab5b86d000bdcee58b4cadd7a3c1cf560c5
2022-02-04 09:24:17 +01:00
Anthony Towns
e5f0356e3f rpc/blockchain: rename getdeploymentinfo tip/active_chain_tip to blockindex 2022-02-04 13:43:52 +10:00
MarcoFalke
fa1b227a72
Remove broken and unused CDataStream methods 2022-02-03 20:16:50 +01:00
MarcoFalke
faee5f8dc2
test: Create fresh CDataStream each time
Can be reviewed with --ignore-all-space
2022-02-03 20:16:41 +01:00
MarcoFalke
fa71114926
test: Inline expected_xor 2022-02-03 20:16:39 +01:00
laanwj
04255073bb qt: Update source translations 2022-02-03 13:37:18 +01:00
laanwj
cf79c56e65 init: Remove confusing '(possible integer overflow?)' from error message 2022-02-03 13:36:56 +01:00
Kiminuo
41d7166c8a
refactor: replace boost::filesystem with std::filesystem
Warning: Replacing fs::system_complete calls with fs::absolute calls
in this commit may cause minor changes in behaviour because fs::absolute
no longer strips trailing slashes; however these changes are believed to
be safe.

Co-authored-by: Russell Yanofsky <russ@yanofsky.org>
Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>
2022-02-03 18:35:52 +08:00
laanwj
df669230cf
Merge bitcoin/bitcoin#24166: p2p, contrib: add cjdns hardcoded seeds and update the i2p seeds
bcc5676f16 p2p, contrib: update i2p hardcoded seeds (Jon Atack)
e5332425fc p2p, contrib: add cjdns hardcoded seeds (Jon Atack)

Pull request description:

  This update targets the v23 release.  Additional reliable CJDNS seeds, and feedback on the I2P seeds, is welcome.  To verify `src/chainparamsseeds.h` locally, run:
  ```
  contrib/seeds/generate-seeds.py contrib/seeds > src/chainparamsseeds.h
  ```

ACKs for top commit:
  laanwj:
    Code review ACK bcc5676f16
  lsilva01:
    tACK bcc5676

Tree-SHA512: 40b1bbb89b9677e1e88c17ac279d6ff5a8ea9f4a1e1ef07e2b71074471308da4760b69cf5130134082c25e7caf4ded02bcc89bd75fae68c2834c64c230e82ac4
2022-02-02 19:38:07 +01:00
Sebastian Falbesoner
0c49e52b22 build: remove unneeded getentropy detection (HAVE_GETENTROPY) 2022-02-02 17:22:42 +01:00
Sebastian Falbesoner
5cd15ffdce random: use arc4random on OpenBSD
Following best practices on OpenBSD. The getentropy(2) man page states:
"getentropy() is not intended for regular code;
 please use the arc4random(3) family of functions instead."
2022-02-02 15:35:26 +01:00
MarcoFalke
fad81548fa
test: Avoid testing negative block heights 2022-02-02 15:32:06 +01:00