diff --git a/libavutil/xtea.c b/libavutil/xtea.c index 138657f88b..07a66e5666 100644 --- a/libavutil/xtea.c +++ b/libavutil/xtea.c @@ -71,8 +71,8 @@ void av_xtea_crypt(AVXTEA *ctx, uint8_t *dst, const uint8_t *src, int count, { int i; - while (count > 0) { - if (decrypt) { + if (decrypt) { + while (count > 0) { xtea_crypt_ecb(ctx, dst, src, decrypt); if (iv) { @@ -80,7 +80,13 @@ void av_xtea_crypt(AVXTEA *ctx, uint8_t *dst, const uint8_t *src, int count, dst[i] = dst[i] ^ iv[i]; memcpy(iv, src, 8); } - } else { + + src += 8; + dst += 8; + count -= 8; + } + } else { + while (count > 0) { if (iv) { for (i = 0; i < 8; i++) dst[i] = src[i] ^ iv[i]; @@ -89,11 +95,10 @@ void av_xtea_crypt(AVXTEA *ctx, uint8_t *dst, const uint8_t *src, int count, } else { xtea_crypt_ecb(ctx, dst, src, decrypt); } + src += 8; + dst += 8; + count -= 8; } - - src += 8; - dst += 8; - count -= 8; } }