]> git.sesse.net Git - ffmpeg/blobdiff - libavutil/sha512.c
avutil: Switch crypto APIs to size_t
[ffmpeg] / libavutil / sha512.c
index 6d092a7c5c0e3ab523ca3599901884f88067649f..97aaaa865c3c9d3967163a6b596b6d08914144b9 100644 (file)
@@ -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
 }