]> git.sesse.net Git - ffmpeg/blobdiff - libavutil/ripemd.c
avutil: Switch crypto APIs to size_t
[ffmpeg] / libavutil / ripemd.c
index 4f1c4ea899fbefd4d995c974d6f1307ffaa05b2a..b8e9761a242c07a314f87f2c1f35202ff6d6fd8b 100644 (file)
@@ -19,6 +19,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
+#include <stddef.h>
 #include <string.h>
 
 #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
 }