- Fixed bug when
walletdwill not sync after being unable to contact
bytecoindfor a long time.
- Fixed rare bug when exported view wallet contained wrong view secrets signature.
- Fixed bug when instead of error message, empty send proof was generated for address not used in particular transaction. Such proofs are invalid so this did not lead to any security issues.
- Fixed bug when
walletdsometimes included no block information for unlocked outputs in
get_transfersJSON RPC call. This affected only clients who inspected per-block
unlocked_transfers, but not
unlocked_transfersarray returned for the request as a whole.
- Fixed problem when during
sync_blocksexcess block was returned at the start of the response. This could lead to endless sync loop if this block size was larger that
max_sizelimit set by caller, because only that block would be returned again and again.
- Removed addresses from wallet cache for amethyst wallets
walletdcan now export view-only wallet without ability to view outgoing addresses from a view-wallet with such capability.
tx_pool_versionis no more reset to
0on block change, but steadily increases on each pool modification. Ir prevents some very rare race conditions between APi users and daemons.
- Lots of code reorganisation to remove false positives from clang static analyser.
- Several potential undefined behaviours fixed, related to forgetting to initialise values of primitive types in templates.
- Potential floating-point undefined behaviour fixed.
- Several additional checks added to P2P commands parsing.
- Potential crash in groestl hash implementation fixed.
- Connections using legacy P2P version (and legacy commands) prohibited, effectively enabling much stricter consensus rules for P2P (such as hard limits on size of all commands), hardening against potential attacks.
- Security options (non-executable stack, position-independent-binary, non-writable relocation table) for binaries enabled by default on Linux.
- Tiny memory leak fixed.
Incompatible API changes
walletdmethods do not return outputs in transfers by default (they are large and very rarely needed). If you need outputs, you should set
need_outputsparameter to true.
outputsfield is now optional in transfer in all contexts.
public_keyfield is now optional in transaction in all contexts (motivation - amethyst transactions contain no public key)
extrafield is now optional in transaction in all contexts (motivation - after removing public key from extra, it is empty for most transactions)