Permalink
Commits on Oct 9, 2015
  1. Merge pull request #6785

    36f14bf In (strCommand == "tx"), return if AlreadyHave() (Tom Harding)
    laanwj committed Oct 9, 2015
  2. Update miniupnpc to 1.9.20151008

    This version of miniupnpc fixes a buffer overflow in the XML (ugh)
    parser during initial network discovery.
    
    http://talosintel.com/reports/TALOS-2015-0035/
    
    The commit fixing the vulnerability is:
    miniupnp/miniupnp@79cca97
    
    Reported by timothy on IRC.
    
    Github-Pull: 6789
    Rebased-From: 0cca024
    laanwj committed Oct 9, 2015
  3. In (strCommand == "tx"), return if AlreadyHave()

    The main effect is to exit processing for recently-rejected hashes,
    in case they are pushed to us without prior advertisement.  This
    behavior was seen in the wild.
    
    An additional effect is to do early checks for mempool or mapOrphan
    existence.  No logging or nDoS tracking is needed for failures of
    these checks.
    dgenr8 committed Aug 24, 2015
Commits on Oct 7, 2015
  1. Test LowS in standardness, removes nuisance malleability vector.

    This adds SCRIPT_VERIFY_LOW_S to STANDARD_SCRIPT_VERIFY_FLAGS which
     will make the node require the canonical 'low-s' encoding for
     ECDSA signatures when relaying or mining.
    
    Consensus behavior is unchanged.
    
    The rational is explained in a81cd96:
     Absent this kind of test ECDSA is not a strong signature as given
     a valid signature {r, s} both that value and {r, -s mod n} are valid.
     These two encodings have different hashes allowing third parties a
     vector to change users txids.  These attacks are avoided by picking
     a particular form as canonical and rejecting the other form(s); in
     the of the LOW_S rule, the smaller of the two possible S values is
     used.
    
    If widely deployed this change would eliminate the last remaining
     known vector for nuisance malleability on boring SIGHASH_ALL
     p2pkh transactions.  On the down-side it will block most
     transactions made by sufficiently out of date software.
    
    Unlike the other avenues to change txids on boring transactions this
     one was randomly violated by all deployed bitcoin software prior to
     its discovery.  So, while other malleability vectors where made
     non-standard as soon as they were discovered, this one has remained
     permitted.  Even BIP62 did not propose applying this rule to
     old version transactions, but conforming implementations have become
     much more common since BIP62 was initially written.
    
    Bitcoin Core has produced compatible signatures since a28fb70 in
     September 2013, but this didn't make it into a release until 0.9
     in March 2014; Bitcoinj has done so for a similar span of time.
     Bitcoinjs and electrum have been more recently updated.
    
    This does not replace the need for BIP62 or similar, as miners can
     still cooperate to break transactions.  Nor does it replace the
     need for wallet software to handle malleability sanely[1]. This
     only eliminates the cheap and irritating DOS attack.
    
    [1] On the Malleability of Bitcoin Transactions
    Marcin Andrychowicz, Stefan Dziembowski, Daniel Malinowski, Łukasz Mazurek
    http://fc15.ifca.ai/preproceedings/bitcoin/paper_9.pdf
    
    Rebased-From: b196b68
    Github-Pull: #6769
    gmaxwell committed with laanwj Oct 6, 2015
Commits on Oct 6, 2015
  1. Merge pull request #6750

    5094a81 Move recentRejects initialization to top of InitBlockIndex (Wladimir J. van der Laan)
    ec9b6c3 Keep track of recently rejected transactions (Peter Todd)
    6eed52e Only use randomly created nonces in CRollingBloomFilter. (Pieter Wuille)
    83671ef Make CRollingBloomFilter set nTweak for you (Peter Todd)
    25cf122 Reuse vector hashing code for uint256 (Pieter Wuille)
    2983fe0 Add uint256 support to CRollingBloomFilter (Peter Todd)
    laanwj committed Oct 6, 2015
Commits on Oct 2, 2015
  1. Move recentRejects initialization to top of InitBlockIndex

    This avoids that premature return in the condition that a new chain is initialized
    results in NULL pointer errors due to recentReject not being constructed.
    
    Also add assertions where it is used.
    
    (cherry picked from commit a8d0407)
    laanwj committed with petertodd Jul 31, 2015
  2. Keep track of recently rejected transactions

    Nodes can have divergent policies on which transactions they will accept
    and relay.  This can cause you to repeatedly request and reject the same
    tx after its inved to you from various peers which have accepted it.
    Here we add rolling bloom filter to keep track of such rejections,
    clearing the filter every time the chain tip changes.
    
    Credit goes to Alex Morcos, who created the patch that this code is
    based on.
    
    Original code by Peter Todd. Refactored to not construct the
    filter at startup time by Pieter Wuille.
    
    (cherry picked from commit 0847d9c)
    petertodd committed Jul 17, 2015
  3. Only use randomly created nonces in CRollingBloomFilter.

    (cherry picked from commit d741371)
    sipa committed with petertodd Jul 27, 2015
  4. Make CRollingBloomFilter set nTweak for you

    While CBloomFilter is usually used with an explicitly set nTweak,
    CRollingBloomFilter is only used internally. Requiring every caller to
    set nTweak is error-prone and redundant; better to have the class handle
    that for you with a high-quality randomness source.
    
    Additionally when clearing the filter it makes sense to change nTweak as
    well to recover from a bad setting, e.g. due to insufficient randomness
    at initialization, so the clear() method is replaced by a reset() method
    that sets a new, random, nTweak value.
    
    (cherry picked from commit d2d7ee0)
    petertodd committed Jul 19, 2015
  5. Reuse vector hashing code for uint256

    (cherry picked from commit a3d65fe)
    sipa committed with petertodd Jul 27, 2015
  6. Add uint256 support to CRollingBloomFilter

    (cherry picked from commit bbe4108)
    petertodd committed Jul 17, 2015
Commits on Sep 29, 2015
Commits on Sep 23, 2015
  1. Merge pull request #6703

    45bfa13 PARTIAL: typofixes (found by misspell_fixer) (Veres Lajos)
    21c406e add support for miniupnpc api version 14 (Pavel Vasin)
    13bd5a7 rpc-tests: re-enable rpc-tests for Windows (Cory Fields)
    ccc4ad6 net: Set SO_REUSEADDR for Windows too (Cory Fields)
    1f6772e add unit test for CNetAddr::GetGroup. (Alex Morcos)
    13642a5 Fix masking of irrelevant bits in address groups. (Alex Morcos)
    6b51b9b Replace boost::reverse_lock with our own. (Casey Rodarmor)
    626c5e6 Make sure we re-acquire lock if a task throws (Casey Rodarmor)
    4877053 Add missing files to files.md (fanquake)
    f171fee Handle leveldb::DestroyDB() errors on wipe failure (Adam Weiss)
    c5b89fe Fix race condition on test node shutdown (Casey Rodarmor)
    4a37410 Handle no chain tip available in InvalidChainFound() (Ross Nicoll)
    f6d29a6 Use unique name for AlertNotify tempfile (Casey Rodarmor)
    e6adac7 Delay initial pruning until after wallet init (Adam Weiss)
    e0020d4 Make sure LogPrint strings are line-terminated (J Ross Nicoll)
    7ff9d12 Make sure LogPrintf strings are line-terminated (Wladimir J. van der Laan)
    5a39133 build: fix libressl detection (Cory Fields)
    f6355e6 Avoid leaking file descriptors in RegisterLoad (Casey Rodarmor)
    60457d3 locking: fix a few small issues uncovered by -Wthread-safety (Cory Fields)
    a496e11 Remove bash test note from rpc-tests readme (fanquake)
    49c6a64 tests: Remove old sh-based test framework (Wladimir J. van der Laan)
    a37567d Add autogen.sh to source tarball. (randy-waterhouse)
    1f4d7cf travis: for travis generating an extra build (Cory Fields)
    laanwj committed Sep 23, 2015
Commits on Sep 22, 2015
  1. [QT] fix thin space word wrap line brake issue

    The thin space QT html hack results in cut-off chars/nums after a line break.
    
    Avoid word wrap line breaks by using a smaller font and a line break before each alternative value)
    
    Rebased-From: 24cb7c7
    Github-Pull: #6694
    jonasschnelli committed with laanwj Sep 18, 2015
  2. PARTIAL: typofixes (found by misspell_fixer)

    Upstream: 9f68ed6 (PR #6539)
    vlajos committed with luke-jr Aug 8, 2015
  3. add support for miniupnpc api version 14

    The value of new arg ttl is set to 2 as it's recommended default.
    JohnDolittle committed with luke-jr Aug 23, 2015
  4. net: Set SO_REUSEADDR for Windows too

    When running the rpc tests in Wine, nodes often fail to listen on localhost
    due to a stale socket from a previous run. This aligns the behavior with other
    platforms.
    theuni committed with luke-jr Aug 20, 2015
  5. Add missing files to files.md

    typo
    fanquake committed with luke-jr Aug 13, 2015
  6. Handle leveldb::DestroyDB() errors on wipe failure

    Add error checking to CLevelDBWrapper for errors from
    leveldb::DestroyDB().  Without it, if unlink() or DeleteFileW() fail to
    delete files, they will fail silent.  If they fail to delete any files,
    CLevelDBWrapper will silently open and read the existing database.
    
    Typically any permissions issues would be caught by leveldb as it churns
    through many files as part of its compaction process, but it is
    conceivable that this could cause problems on Windows with anti-virus
    and indexing software.
    ajweiss committed with luke-jr Aug 12, 2015
  7. Handle no chain tip available in InvalidChainFound()

    Handle the case where no chain tip is available, in InvalidChainFound(). This fixes a null pointer deference when running unit tests, if the genesis block or block validation code is broken.
    rnicoll committed with luke-jr Jul 4, 2015
  8. Delay initial pruning until after wallet init

    Don't prune until any wallet rescanning has taken place to avoid
    potentially pruning blocks that the wallet rescan may need.
    ajweiss committed with luke-jr Jun 30, 2015
  9. Make sure LogPrintf strings are line-terminated

    Fix the cases where LogPrint[f] was accidentally called without line
    terminator, which resulted in concatenated log lines.
    
    (see e.g. #6492)
    laanwj committed with luke-jr Jul 31, 2015
  10. build: fix libressl detection

    Checking libcrypto for a function after we've already found a (possibly
    different) libcrypto is not what we want to do here.
    
    pkg-config might've found a cross lib while AC_CHECK_LIB may find a different
    or native one.
    
    Run a link-test against the lib that's already been found instead.
    theuni committed with luke-jr Aug 1, 2015
  11. Avoid leaking file descriptors in RegisterLoad

    This is pretty trivial, but if there's an error here we'll leak a file
    descriptor. Changed it to always close the file.
    casey committed with luke-jr Jul 28, 2015
  12. locking: fix a few small issues uncovered by -Wthread-safety

    - rpcwallet: No need to lock twice here
    - openssl: Clang doesn't understand selective lock/unlock here. Ignore it.
    - CNode: Fix a legitimate (though very unlikely) locking bug.
    theuni committed with luke-jr Jun 16, 2015