X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavutil%2Fripemd.c;h=b8e9761a242c07a314f87f2c1f35202ff6d6fd8b;hb=8b3e6ce5f4ab1ebf3a54ff7e0ff440a1a5f842f7;hp=4f1c4ea899fbefd4d995c974d6f1307ffaa05b2a;hpb=762c2b5dcd99a08452299cd1f83070f88115f1f3;p=ffmpeg diff --git a/libavutil/ripemd.c b/libavutil/ripemd.c index 4f1c4ea899f..b8e9761a242 100644 --- a/libavutil/ripemd.c +++ b/libavutil/ripemd.c @@ -19,6 +19,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include #include #include "attributes.h" @@ -510,13 +511,10 @@ av_cold int av_ripemd_init(AVRIPEMD *ctx, int bits) return 0; } -#if FF_API_CRYPTO_SIZE_T -void av_ripemd_update(AVRIPEMD* ctx, const uint8_t* data, unsigned int len) -#else void av_ripemd_update(AVRIPEMD* ctx, const uint8_t* data, size_t len) -#endif { - unsigned int i, j; + unsigned int j; + size_t i; j = ctx->count & 63; ctx->count += len; @@ -529,15 +527,19 @@ void av_ripemd_update(AVRIPEMD* ctx, const uint8_t* data, size_t len) } } #else - if ((j + len) > 63) { + if (len >= 64 - j) { + const uint8_t *end; memcpy(&ctx->buffer[j], data, (i = 64 - j)); ctx->transform(ctx->state, ctx->buffer); - for (; i + 63 < len; i += 64) - ctx->transform(ctx->state, &data[i]); + data += i; + len -= i; + end = data + (len & ~63); + len = len % 64; + for (; data < end; data += 64) + ctx->transform(ctx->state, data); j = 0; - } else - i = 0; - memcpy(&ctx->buffer[j], &data[i], len - i); + } + memcpy(&ctx->buffer[j], data, len); #endif }