diff --git a/ChangeLog b/ChangeLog index 16560c14a50fb5e3daef3cb5a4873ef0145bf4dd..015155754638ef8cd4e8414a7fce227de88f2b5d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2018-10-10 Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> + + * ctr16.c (_ctr_crypt16): Bugfix for the src == dst case, when + processing more than on full block of size CTR_BUFFER_LIMIT, src + and dst arguments to memxor3 were not properly updated. + 2018-10-10 Niels Möller <nisse@lysator.liu.se> * aes-set-encrypt-key.c: Add missing include of stdlib.h. diff --git a/ctr16.c b/ctr16.c index 60418e8b90323e14fb45ea79e79b19def38e0ee0..7e1c23d20832660d1bb8ef1688ca4eff02b9eb34 100644 --- a/ctr16.c +++ b/ctr16.c @@ -91,7 +91,7 @@ _ctr_crypt16(const void *ctx, nettle_cipher_func *f, f(ctx, CTR_BUFFER_LIMIT, buffer->b, buffer->b); if (length - i < CTR_BUFFER_LIMIT) goto done; - memxor3 (dst, src, buffer->b, CTR_BUFFER_LIMIT); + memxor3 (dst + i, src + i, buffer->b, CTR_BUFFER_LIMIT); } if (blocks > 0)