Commit Graph

3811 Commits

Author SHA1 Message Date
Pieter Wuille
3230b329ea Raise version of created blocks, and enforce DERSIG in mempool 2015-02-06 10:42:01 -08:00
Pieter Wuille
989d49921b Backport of some of BIP66's tests 2015-02-05 21:26:15 -08:00
Pieter Wuille
ab03660824 Implement BIP 66 validation rules and switchover logic 2015-02-05 20:56:10 -08:00
Wladimir J. van der Laan
be8ac71d96
Bump version to 0.9.4 2015-01-12 10:33:39 +01:00
Wladimir J. van der Laan
f6b753912b
qt: Pull updated translations from Transifex 2015-01-12 10:17:54 +01:00
Wladimir J. van der Laan
037bfefe6b
Improve robustness of DER recoding code
Add some defensive programming on top of #5634.

This copies the respective OpenSSL code in ECDSA_verify in
OpenSSL pre-1.0.1k (e.g. https://github.com/openssl/openssl/blob/OpenSSL_1_0_1j/crypto/ecdsa/ecs_vrf.c#L89)
more closely.

As reported by @sergiodemianlerner.

Github-Pull: #5640
Rebased-From: c6b7b29f23
2015-01-12 09:28:24 +01:00
Wladimir J. van der Laan
60c51f1c38
fail immediately on an empty signature
Github-Pull: #5634
Rebased-From: 8dccba6a45
2015-01-10 08:58:47 +01:00
Cory Fields
b8e81b7ccd
consensus: guard against openssl's new strict DER checks
New versions of OpenSSL will reject non-canonical DER signatures. However,
it'll happily decode them. Decode then re-encode before verification in order
to ensure that it is properly consumed.

Github-Pull: #5634
Rebased-From: 488ed32f2a
2015-01-10 08:31:14 +01:00
Gregory Maxwell
0a94661e8d
Disable SSLv3 (in favor of TLS) for the RPC client and server.
TLS is subject to downgrade attacks when SSLv3 is available, and
 SSLv3 has vulnerabilities.

The popular solution is to disable SSLv3. On the web this breaks
 some tiny number of very old clients. While Bitcoin RPC shouldn't
 be exposed to the open Internet, it also shouldn't be exposed to
 really old SSL implementations, so it shouldn't be a major issue
 for us to disable SSLv3.

There is more information on the downgrade attacks and disabling
 SSLv3 at https://disablessl3.com/ .

Rebased-From: 683dc4009b
2014-12-09 15:22:28 +01:00
Pieter Wuille
bb424e4447
Limit the number of new addressses to accumulate
Rebased-From: 12a49cac0a
2014-12-09 15:17:21 +01:00
Gregory Maxwell
cd5164aba2
Make -proxy set all network types, avoiding a connect leak.
Previously -proxy was not setting the proxy for IsLimited networks, so
 if you set your configuration to be onlynet=tor you wouldn't get an
 IPv4 proxy set.

The payment protocol gets its proxy configuration from the IPv4 proxy,
 and so it would experience a connection leak.

This addresses issue #5355 and also clears up a cosmetic bug where
 getinfo proxy output shows nothing when onlynet=tor is set.

Conflicts:
	src/init.cpp

Rebased-From: 3c77714134
Github-Issue: #5358
2014-11-24 15:33:46 +01:00
Gavin Andresen
25b49b5b45 Refactor -alertnotify code
Refactor common -alertnotify code into static CAlert::Notify method.
2014-10-08 12:17:57 +02:00
Cory Fields
5b9f78d69c build: Fix OSX build when using Homebrew and qt5
Qt5 is bottled, so configure won't find it without some help. Use
brew to find out its prefix.

Also, qt5 added the host_bins variable to pkg-config, use it.
2014-10-03 15:33:24 -04:00
Gavin Andresen
ea3c1b0806 Store fewer orphan tx by default, add -maxorphantx option
There is no reason to store thousands of orphan transactions;
normally an orphan's parents will either be broadcast or
mined reasonably quickly.

This pull drops the maximum number of orphans from 10,000 down
to 100, and adds a command-line option (-maxorphantx) that is
just like -maxorphanblocks to override the default.
2014-09-11 15:06:46 +02:00
shshshsh
af252082ef Make max number of orphan blocks kept in memory a startup parameter (fixes #4253)
Rebased-From: 7b45d943b2
2014-09-11 15:06:46 +02:00
Gavin Andresen
6d911ada83
Stricter handling of orphan transactions
Prevent denial-of-service attacks by banning
peers that send us invalid orphan transactions
and only storing orphan transactions given to
us by a peer while the peer is connected.

Rebased-From: c74332c678
2014-09-11 15:06:42 +02:00
phantomcircuit
306a93b79e
remove useless millisleep
reduces time to service requests improving performance

Rebased-From: 9189f5fe4d
2014-09-11 11:20:48 +02:00
Jeff Garzik
6eb5410d8f
Avoid returning many "inv" orphans
Rebased-From: 540ac45
Rebased-By: Wladimir J. van der Laan <laanwj@gmail.com>
2014-09-10 17:05:31 +02:00
Wladimir J. van der Laan
d030936da2
Limit CNode::mapAskFor
Tighten resource constraints on CNode.

Rebased-From: d4168c8
Rebased-By: Wladimir J. van der Laan <laanwj@gmail.com>
2014-09-10 17:00:37 +02:00
Gavin Andresen
12927dd315 Fix crashing bug caused by orphan(s) with duplicate prevout.hash
Rebased-From: def2fdb
Rebased-By: Wladimir J. van der Laan
2014-09-10 16:56:54 +02:00
Wladimir J. van der Laan
c6727f34d1 Avoid repeated lookups in mapOrphanTransactions and mapOrphanTransactionsByPrev
Rebased-From: 89d91f6
Rebased-By: Wladimir J. van der Laan <laanwj@gmail.com>
2014-09-09 09:20:54 +02:00
Wladimir J. van der Laan
ea55881c3e Filter translations through new update-translations script
This does not add any new messages from transifex, it just filters the
current ones.
2014-09-01 11:00:16 +02:00
Wladimir J. van der Laan
e6abbce8cd
qt: Language update for 0.9.3 2014-08-22 12:02:24 +02:00
Cory Fields
47c78c2966 libc-compat: add new symbol that's now needed
Rebased-From: 565e569
2014-08-21 18:07:05 +02:00
Cory Fields
0991401cdd
build: Fix boost build on some platforms
When the libpath doesn't line up with the value from config.sub, we don't find
the correct path to boost's libs. This adds a hack to try another path before
giving up.

Should close #3219.

Rebased-From: 54c7df81
2014-08-21 17:54:09 +02:00
Cory Fields
f62031b895
qt: fix unicode character display on osx when building with 10.7 sdk
Conflicts:
	src/qt/bitcoin.cpp

Rebased-From: 292cc072
2014-08-21 17:35:31 +02:00
Jeff Garzik
026b9dfd6e
Avoid querying DNS seeds, if we have open connections.
The goal is to increase independence and privacy.

Rebased-From: 2e7009d
2014-08-19 17:37:07 +02:00
Peter Todd
84fe0ffd68 Increase IsStandard() scriptSig length
Removes the limits on number of pubkeys for P2SH CHECKMULTISIG outputs.
Previously with the 500 byte scriptSig limit there were odd restrictions
where even a 1-of-12 P2SH could be spent in a standard transaction(1),
yet multisig scriptPubKey's requiring more signatures quickly ran out of
scriptSig space.

From a "stuff-data-in-the-blockchain" point of view not much has changed
as with the prior commit now only allowing the dummy value to be null
the newly allowed scriptSig space can only be used for signatures. In
any case, just using more outputs is trivial and doesn't cost much.

1) See 779b519480d8c5346de6e635119c7ee772e97ec872240c45e558f582a37b4b73
   Mined by BTC Guild.
2014-08-18 15:34:29 +02:00
Peter Todd
fd0c4606bc Check redeemScript size does not exceed 520 byte limit
redeemScripts >520bytes can't be spent due to the
MAX_SCRIPT_ELEMENT_SIZE limit; previously the addmultisigaddress and
createmultisig RPC calls would let you violate that limit unknowingly.

Also made the wallet code itself check the redeemScript prior to adding
it to the wallet, which in the (rare) instance that a user has added an
invalid oversized redeemScript to their wallet causes an error on
startup. The affected key isn't added to the wallet; other keys are
unaffected.
2014-08-18 15:34:29 +02:00
Wladimir J. van der Laan
4b57c5b3c7 Ignore too-long redeemScripts while loading wallet
This avoids that long redeemScripts that were grandfathered in
prevent the wallet from loading.

Fixes #4313.

Rebased-From: 18116b0
2014-08-18 15:34:29 +02:00
Jeff Garzik
f8cdf4f937 base58: add paranoid return value checks
Rebased-From: 88df548
2014-08-18 15:34:29 +02:00
Andrew Poelstra
f6f4c83382 key.cpp: fail with a friendlier message on missing ssl EC support
Previously if bitcoind is linked with an OpenSSL which is compiled
without EC support, this is seen as an assertion failure "pKey !=
NULL" at key.cpp:134, which occurs after several seconds. It is an
esoteric piece of knowledge to interpret this as "oops, I linked
with the wrong OpenSSL", and because of the delay it may not even
be noticed.

The new output is

: OpenSSL appears to lack support for elliptic curve cryptography. For
more information, visit
https://en.bitcoin.it/wiki/OpenSSL_and_EC_Libraries
: Initialization sanity check failed. Bitcoin Core is shutting down.

which occurs immediately after attempted startup.

This also blocks in an InitSanityCheck() function which currently only
checks for EC support but should eventually do more. See #4081.

Rebased-From: 4a09e1d
2014-08-18 15:34:29 +02:00
Trevin Hofmann
23826316d4 Add a new checkpoint at block 295,000
Block 295,000 seems to meet the criteria of a reasonable timestamp and
no strange transactions. 295,000 is the current block height in the
bootstrap.dat torrent provided by jgarzik.

Rebased-From: 125fba1
2014-08-18 15:34:29 +02:00
Pieter Wuille
a78996503f Add a way to limit deserialized string lengths
and use it for most strings being serialized.

Rebased-From: 216e9a4
2014-08-18 15:34:29 +02:00
Pavel Vasin
0a6dcae508 AvailableCoins: acquire cs_main mutex
It's required when called from WalletModel

Rebased-From: ea3acaf
2014-08-18 15:34:28 +02:00
Ruben Dario Ponticelli
44d8e093ca Avoid a segfault on getblock if it can't read a block from disk.
Rebased-From: 954d2e7
2014-08-18 15:34:28 +02:00
Julian Haight
bf75a3d3fd qt: fix 'opens in testnet mode when presented with a BIP-72 link with no fallback'
Passes tests:

```
$ ./bitcoin-qt 'bitcoin:?r=http://www.example.com/'
.. fixed the original problem - this launches mainnet.

$ ./bitcoin-qt 'bitcoin:mngeNQbTKnmaMbx8EXCYdwUbnt9JJD52cC'
.. launches testnet

$ ./bitcoin-qt -testnet 'bitcoin:1NXXeQRyMFFFRfyUix2o7mk1vhvk2Nxp78'
.. sanity check - launches mainnet.
```

Fixes #4355. Closes #4411.

Rebased-From: dd49e92
2014-08-18 15:34:28 +02:00
Zak Wilcox
221684c7ef Clarify that redeemScript is often optional
Rebased-From: 6265ecc
2014-08-18 15:34:28 +02:00
Cory Fields
84efe0ec22 Remove bignum dependency for scripts
Rebased-From: 48d8eb1 27bff74 4f497cd 05e3ecf 90320d6 b1fdd54
2014-08-18 15:34:28 +02:00
Zak Wilcox
5baa4a90e3 In -? output: -keypool, -gen, -genproclimit depend on ENABLE_WALLET
Rebased-From: a7e1d50
2014-08-18 15:34:28 +02:00
Wladimir J. van der Laan
5332b0a429 Don't poll showmyip.com, it doesn't exist anymore
Fixes #4679.

This leaves us with only one candidate, checkip.dyndns.org.
GetMyExternalIP should be phased out as soon as possible.

Rebased-From: c33b983
2014-08-18 15:11:15 +02:00
Wladimir J. van der Laan
6862c8ba99 Version bump for 0.9.3 2014-08-18 15:05:38 +02:00
Wladimir J. van der Laan
752ecec5cc Remove NumBlocksOfPeers
Generally useless information. Only updates on connect time, not after
that. Peers can easily lie and the median filter is not effective in
preventing that.

In the past it was used for progress display in the GUI but
`CheckPoints::guessVerificationProgress` provides a better way that is now used.
It was too easy to mislead it. Peers do lie about it in practice, see issue #4065.

From the RPC, `getpeerinfo` gives the peer raw values, which are more
useful.
2014-07-04 06:58:45 +02:00
Wladimir J. van der Laan
354c0f382b
Bump version to 0.9.2.1 2014-06-19 09:51:15 +02:00
Wladimir J. van der Laan
b64b1c6e9f
rpc: Add acceptors only when listening succeeded
Rebased-From: 6afa493
Rebased-By: Wladimir J. van der Laan <laanwj@gmail.com>
2014-06-19 09:41:25 +02:00
Wladimir J. van der Laan
a3788527a2 rpc: Ignore and log errors during cancel
Cancelling the RPC acceptors can sometimes result in an error about
a bad file descriptor.

As this is the shutdown sequence we need to continue nevertheless,
ignore these errors, log a warning and proceed.

Fixes #4352.
2014-06-19 09:38:04 +02:00
Cory Fields
9d5b5c3a2d Qt: Fix monospace font in osx 10.9
The "Monospace" hint was added in Qt 4.8, and it works as intended as opposed
to "TypeWriter" which fails to load a font.

Rebased-From: e9df7f8
Rebased-By: Wladimir J. van der Laan
2014-06-18 19:53:55 +02:00
Wladimir J. van der Laan
e39a3f2c69
qt: Periodic translation update
Rebased-From: db41541
Rebased-By: Wladimir J. van der Laan <laanwj@gmail.com>
2014-06-06 19:29:47 +02:00
Jeff Garzik
7ccadd4199
CWallet: fix nTimeFirstKey init, by making constructor init common code
Don't repeat yourself etc.

Rebased-From: d04fd3e
Rebased-By: Wladimir J. van der Laan <laanwj@gmail.com>
2014-06-06 19:26:15 +02:00
tm314159
eac2cdcab2
Properly initialize CWallet::nTimeFirstKey
Rebased-From: 91855f2
Rebased-By: Wladimir J. van der Laan <laanwj@gmail.com>
2014-06-03 08:54:45 +02:00