Commit Graph

11626 Commits

Author SHA1 Message Date
Miguel Portilla
8e9495f487 Use lock when creating peer shard rangeset 2018-03-21 20:39:19 -07:00
Howard Hinnant
40dc6b1458 Limit STVar recursion during deserialization (RIPD-1603):
Constructing deeply nested objects could allow an attacker to
cause a server to overflow its available stack.

We now enforce a 10-deep nesting limit, and signal an error
if we encounter objects that are nested deeper.

Acknowledgements:
Ripple thanks Guido Vranken for responsibly disclosing this
issues.

Bug Bounties and Responsible Disclosures:
We welcome reviews of the rippled codebase and urge reviewers
to responsibly disclose any issues that they may find. For
more on Ripple's Bug Bounty program, please visit
https://ripple.com/bug-bounty
2018-03-21 20:39:18 -07:00
Nikolaos D. Bougalis
d5f981f5fc Address issues identified by external review:
* RIPD-1617, RIPD-1619, RIPD-1621:
  Verify serialized public keys more strictly before
  using them.

* RIPD-1618:
    * Simplify the base58 decoder logic.
    * Reduce the complexity of the base58 encoder and
      eliminate a potential out-of-bounds memory access.
    * Improve type safety by using an `enum class` to
      enforce strict type checking for token types.

* RIPD-1616:
  Avoid calling `memcpy` with a null pointer even if the
  size is specified as zero, since it results in undefined
  behavior.

Acknowledgements:
Ripple thanks Guido Vranken for responsibly disclosing these
issues.

Bug Bounties and Responsible Disclosures:
We welcome reviews of the rippled code and urge researchers
to responsibly disclose any issues that they may find. For
more on Ripple's Bug Bounty program, please visit:
https://ripple.com/bug-bounty
2018-03-21 20:39:18 -07:00
Nikolaos D. Bougalis
25de6b0a5f Remove STValidation::getFlags:
The function is non-virtual and hides the virtual function specified in
the base class.

Falling back to the virtual function in the base class is the correct
solution.
2018-03-15 21:17:49 -07:00
Nikolaos D. Bougalis
6230204e42 Set version to 0.90.0 2018-02-20 14:18:31 -08:00
Brad Chase
5807ce2127 Set version to 0.90.0-rc3 2018-02-16 12:13:21 -05:00
Scott Schurr
da43775d1b Unit test that NoRipple and DepositAuth are orthogonal 2018-02-16 12:12:44 -05:00
Edward Hennis
099a050c0b Support --unittest-jobs in Test.py scons builds:
* Replace Ubuntu scons dependency with cmake
* Remove dependency installation support for Ubuntu 12.04 Precise Pangolin.
  It is EOL'd as of 2017-04-28. http://releases.ubuntu.com/12.04/
2018-02-16 12:12:44 -05:00
Elliot Lee
6fb2482886 Document AccountLines "out" fields 2018-02-16 12:12:37 -05:00
Scott Schurr
b07da94c31 Remove two inaccurate asserts:
The assert in LedgerHistory.cpp was incorrect since
getLedgerByHash() can return a null object.  The assert has
been seen to fire inappropriately during online_delete.

The assert in LedgerMaster.cpp was simply misguided.  If a
null hash were returned by getLedgerHashForHistory(), then we
should not forward that hash to peers.  The assert only fires
in a debug build, so a release build would forward the request
for a null hash to peers.
2018-02-16 12:06:03 -05:00
MarkusTeufelberger
531e153144 Add missing includes 2018-02-16 12:03:06 -05:00
Brad Chase
079f346efd Improve handling of malformed JSON-RPC requests 2018-02-16 12:00:32 -05:00
seelabs
6d3b2b404d Set version to 0.90.0-rc2 2018-02-13 09:08:17 -05:00
seelabs
9685e756e6 Fix boost compilation issues 2018-02-13 09:08:14 -05:00
seelabs
8e365ea44a Revert "Remove pre-boost beast"
This reverts commit ba43bfc646.
2018-02-12 11:55:59 -05:00
seelabs
9a210cfda5 Revert "Convert code to use boost::beast"
This reverts commit cc9c976b76.
2018-02-12 11:55:59 -05:00
seelabs
060692aad4 Set version to 0.90.0-rc1 2018-02-07 10:55:55 -05:00
Brad Chase
3e9e0c4b53 Set version to 0.90.0-b6 2018-02-03 07:07:11 -05:00
Scott Schurr
88570df135 Allow account_objects RPC to filter by "check" (RIPD-1589):
Fixes #2350 issue on GitHub.
2018-02-03 07:06:56 -05:00
Scott Schurr
c6a307fcd7 Unit test pre-expired offer that also cancels an offer 2018-02-02 20:52:33 -05:00
Brad Chase
fd00e6e035 Use boost 1.66 in macos build instructions 2018-02-02 20:46:37 -05:00
Brad Chase
94c6a2a850 Use LedgerTrie for preferred ledger (RIPD-1551):
These changes augment the Validations class with a LedgerTrie to better
track the history of support for validated ledgers. This improves the
selection of the preferred working ledger for consensus. The Validations
class now tracks both full and partial validations. Partial validations
are only used to determine the working ledger; full validations are
required for any quorum related function. Validators are also now
explicitly restricted to sending validations with increasing ledger
sequence number.
2018-02-02 20:38:38 -05:00
seelabs
1c44c4a43e Set version to 0.90.0-b5 2018-01-29 20:28:33 -05:00
Nikolaos D. Bougalis
7e936187ac Remove deprecated wallet_seed RPC endpoint 2018-01-29 20:28:28 -05:00
Nikolaos D. Bougalis
6328fabd5c Improve log scrubbing:
Per issue #2354, when the log level of a server was configured at
"trace", sensitive keying meterial generated by the `wallet_propose`
command could be written to the server's log file, if one was
configured.

This commit improves the log scrubbing code to account for the
sensitive information generated by a `wallet_propose`.

** Important security consideration **

We still caution everyone *against* executing this command on a
server that they do not control: a malicious server operator could
intercept the generated keypair, or operate a modified server that
returns keypairs that are not securely generated.
2018-01-29 20:28:28 -05:00
Brad Chase
125316f2a6 Update Visual Studio build instructions 2018-01-29 17:59:03 -05:00
Scott Schurr
ed750a84dd Reduce noise in log 2018-01-29 11:56:01 -05:00
Scott Schurr
e0ee58c92d Remove unused beast::currentTimeMillis() 2018-01-29 11:56:01 -05:00
Scott Schurr
6286a9708e Avoid stack overflow on AppVeyor:
o Reduce json_reader max recursion, and
o Use a GCE VM for AppVeyor
2018-01-29 11:56:01 -05:00
Mike Ellery
5e4cb78208 Update macos build instructions:
Added workaround for include path order anomaly with Xcode (discovered
while testing the xcode build instructions)
2018-01-29 11:56:01 -05:00
Howard Hinnant
a8481e369d Better error messages for out of range integral values
* This change passes detailed error messages from the JSON parser
  on the server side, back to the client for inclusion into the
  reply's error message.

* Errors originating from the server's inability to parse are
  reclassified from rpcINTERNAL to rpcINVALID_PARAMS.
2018-01-29 11:56:01 -05:00
Scott Schurr
35cc341544 Unit test that sign_for returns a correct hash (RIPD-1583) 2018-01-29 11:56:01 -05:00
Mike Ellery
f6013c1c37 Sconstruct fix for clang sanitizer build 2018-01-29 11:56:01 -05:00
Mike Ellery
992a390d75 Fix cmake clang build for sanitizers 2018-01-29 11:56:01 -05:00
seelabs
ba43bfc646 Remove pre-boost beast 2018-01-29 11:56:00 -05:00
seelabs
cc9c976b76 Convert code to use boost::beast 2018-01-29 11:56:00 -05:00
Scott Schurr
eaff9a0e6a Set version to 0.90.0-b4 2018-01-17 17:19:23 -08:00
Mike Ellery
2a4eac6eb8 Force boost static linking for macos builds 2018-01-17 16:02:27 -08:00
Howard Hinnant
0ec66b3dbc Limit nesting of json commands 2018-01-17 15:33:15 -08:00
Miguel Portilla
718d217158 Implement Shards 2018-01-17 13:43:54 -08:00
Miguel Portilla
aeda2430cd Normalize SHAMap visit functions 2018-01-17 11:41:43 -08:00
Brad Chase
819ea46bf0 Add RangeSet serialization 2018-01-17 11:21:53 -08:00
Scott Schurr
2d5ddbf1bf Checks (RIPD-1487):
Introduce a new ledger type: ltCHECK
Introduce three new transactions that operate on checks:

- "CheckCreate" which adds the check entry to the ledger.  The
  check is a promise from the source of the check that the
  destination of the check may cash the check and receive up to
  the SendMax specified on the check.  The check may have an
  expiration, after which the check may no longer be cashed.

- "CheckCash" is a request by the destination of the check to
  transfer a requested amount of funds, up to the check's SendMax,
  from the source to the destination.  The destination may receive
  less than the SendMax due to transfer fees.

  When cashing a check, the destination specifies the smallest
  amount of funds that will be acceptable.  If the transfer
  completes and delivers the requested amount, then the check is
  considered cashed and removed from the ledger.  If enough funds
  cannot be delivered, then the transaction fails and the check
  remains in the ledger.

  Attempting to cash the check after its expiration will fail.

- "CheckCancel" removes the check from the ledger without
  transferring funds.  Either the check's source or destination
  can cancel the check at any time.  After a check has expired,
  any account can cancel the check.

Facilities related to checks are on the "Checks" amendment.
2018-01-17 10:00:20 -08:00
Mark Travis
76ad06ef47 Control transaction dispatch rate:
Do not process a transaction received from a peer if it has
been processed within the past ten seconds.

Increase the number of transaction handlers that can be in
flight in the job queue and decrease the relative cost for
peers to share transaction and ledger data.

Additionally, make better use of resources by adjusting the
number of threads we initialize, by reverting commit
68b8ffdb63.

Performance counter modifications:
  * Create and display counters to track:
    1) Pending transaction limit overruns.
    2) Total peer disconnections.
    3) Peers disconnections due to resource consumption.

Avoid a potential double-free in Json library.
2018-01-17 09:23:29 -08:00
Nikolaos D. Bougalis
49b5c42e85 Set version to 0.90.0-b3 2018-01-12 13:42:28 -08:00
Mike Ellery
d9337ad43a Make gold linker less aggressive at discarding boost libs 2018-01-12 13:42:23 -08:00
MarkusTeufelberger
0c22e0262d Link Boost statically only when requested
Fixes #2261
2018-01-10 00:12:23 -08:00
MarkusTeufelberger
593a53253c Poll if process is still alive in Test.py
In some cases this script did not detect properly that the subprocess is already terminated. The "append" loop afterwards caused memory to fill up and the script to fail eventually.
2018-01-10 00:12:23 -08:00
Mike Ellery
0c4f0fdd01 Fix jenkins pipeline for branches 2018-01-10 00:12:23 -08:00
Miguel Portilla
ecd1528197 Update Appveyor dependencies package:
* Use the Visual Studio 2017 image
* Update to rippled_deps17.01
2018-01-10 00:12:23 -08:00