X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavutil%2Fsha512.c;h=97aaaa865c3c9d3967163a6b596b6d08914144b9;hb=a240097ecd4fb1639db99e7becb888ae478405cd;hp=6d092a7c5c0e3ab523ca3599901884f88067649f;hpb=22219a3ac46ac18f797c94e4619a34728556786c;p=ffmpeg diff --git a/libavutil/sha512.c b/libavutil/sha512.c index 6d092a7c5c0..97aaaa865c3 100644 --- a/libavutil/sha512.c +++ b/libavutil/sha512.c @@ -239,13 +239,10 @@ av_cold int av_sha512_init(AVSHA512 *ctx, int bits) return 0; } -#if FF_API_CRYPTO_SIZE_T -void av_sha512_update(AVSHA512* ctx, const uint8_t* data, unsigned int len) -#else void av_sha512_update(AVSHA512* ctx, const uint8_t* data, size_t len) -#endif { - unsigned int i, j; + unsigned int j; + size_t i; j = ctx->count & 127; ctx->count += len; @@ -258,15 +255,19 @@ void av_sha512_update(AVSHA512* ctx, const uint8_t* data, size_t len) } } #else - if ((j + len) > 127) { + if (len >= 128 - j) { + const uint8_t *end; memcpy(&ctx->buffer[j], data, (i = 128 - j)); sha512_transform(ctx->state, ctx->buffer); - for (; i + 127 < len; i += 128) - sha512_transform(ctx->state, &data[i]); + data += i; + len -= i; + end = data + (len & ~127); + len = len % 128; + for (; data < end; data += 128) + sha512_transform(ctx->state, data); j = 0; - } else - i = 0; - memcpy(&ctx->buffer[j], &data[i], len - i); + } + memcpy(&ctx->buffer[j], data, len); #endif }