Page MenuHomePhabricator

Don't allow relative -walletdir paths
ClosedPublic

Authored by Fabien on Jan 24 2019, 09:49.

Details

Summary

Also warn if bitcoind is configured to use a relative -datadir path.

Specifying paths relative to the current working directory in a daemon
process can be dangerous, because files can fail to be located even if
the configuration doesn't change, but the daemon is started up
differently.

Specifying a relative -datadir now adds a warning to the debug log. It
would not be backwards-compatible to forbid relative -datadir paths
entirely, and it could also be also inconvenient for command line
testing.

Specifying a relative -walletdir now results in a startup error. But
since the -walletdir option is new in 0.18.7, there should be no
compatibility issues.
Another reason not to use working directory paths for -walletdir
specifically is that the default -walletdir is a "wallets" subdirectory
inside the datadir, so it could be surprising that setting -walletdir
manually would choose a directory rooted in a completely different
location.

Backport of core PR12220

Depends on D2400

Test Plan
make check
./test/functional/test_runner.py wallet_multiwallet

mkdir mydata
./src/bitcoind -datadir=mydata

Check in the log for a warning:

Warning: relative datadir option 'mydata' specified, which will be

interpreted relative to the current working directory

Diff Detail

Repository
rABC Bitcoin ABC
Branch
PR12220
Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 4685
Build 7433: Bitcoin ABC Buildbot (legacy)
Build 7432: arc lint + arc unit