diff options
author | David Woodhouse <David.Woodhouse@intel.com> | 2016-08-02 22:54:46 +0100 |
---|---|---|
committer | Matt Caswell <matt@openssl.org> | 2016-08-04 20:56:24 +0100 |
commit | 2e94723c1b5d8ab974645e83de90b248265af3cd (patch) | |
tree | a5884ed0abd57521d97fb75f53e9675be9a82155 /test | |
parent | 032924c4b4104654ff8659b4701e4ab25872a12e (diff) |
Fix ubsan 'left shift of negative value -1' error in satsub64be()
Baroque, almost uncommented code triggers behaviour which is undefined
by the C standard. You might quite reasonably not care that the code was
broken on ones-complement machines, but if we support a ubsan build then
we need to at least pretend to care.
It looks like the special-case code for 64-bit big-endian is going to
behave differently (and wrongly) on wrap-around, because it treats the
values as signed. That seems wrong, and allows replay and other attacks.
Surely you need to renegotiate and start a new epoch rather than
wrapping around to sequence number zero again?
Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
Diffstat (limited to 'test')
0 files changed, 0 insertions, 0 deletions