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
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.