diff options
author | Tom Smeding <tom.smeding@gmail.com> | 2019-08-28 16:46:31 +0200 |
---|---|---|
committer | Tom Smeding <tom.smeding@gmail.com> | 2019-08-28 16:46:31 +0200 |
commit | 6bbc646e6f517185344821345459e0dc89ca2c1d (patch) | |
tree | c88a1dcf0d4e132e14464d5e352d58beb3c330e7 /src/version.cpp.in | |
parent | Merge pull request #5707 (diff) | |
download | monero-6bbc646e6f517185344821345459e0dc89ca2c1d.tar.xz |
Fix bug in mempool get_transaction_stats histogram calculation
The 98th percentile position in the agebytes map was incorrectly
calculated: it assumed the transactions in the mempool all have unique
timestamps at second-granularity. This commit fixes this by correctly
finding the right cumulative number of transactions in the map suffix.
This bug could lead to an out-of-bounds write in the rare case that
all transactions in the mempool were received (and added to the mempool)
at a rate of at least 50 transactions per second. (More specifically,
the number of *unique* receive_time values, which have second-
granularity, must be at most 2% of the number of transactions in the
mempool for this crash to trigger.) If this condition is satisfied, 'it'
points to *before* the agebytes map, 'delta' gets a nonsense value, and
the value of 'i' in the first stats.histo-filling loop will be out of
bounds of stats.histo.
Diffstat (limited to 'src/version.cpp.in')
0 files changed, 0 insertions, 0 deletions