From 045b60bf9b1a28faae0ceab053986662e20d3d59 Mon Sep 17 00:00:00 2001
From: Kostya Shishkov <kostya.shishkov@gmail.com>
Date: Thu, 11 Feb 2010 11:45:35 +0000
Subject: [PATCH] Make SHA digest function write digest value with AV_WN32
 instead of assuming that output may be written as uint32_t since output
 buffer may not be aligned (and it's silly to force alignment on it) and it
 does not work in that case properly on some architectures.

Originally committed as revision 21754 to svn://svn.ffmpeg.org/ffmpeg/trunk
---
 libavutil/sha.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/libavutil/sha.c b/libavutil/sha.c
index 3107deeffea..38221a71642 100644
--- a/libavutil/sha.c
+++ b/libavutil/sha.c
@@ -25,6 +25,7 @@
 #include "avutil.h"
 #include "bswap.h"
 #include "sha.h"
+#include "intreadwrite.h"
 
 /** hash context */
 typedef struct AVSHA {
@@ -319,7 +320,7 @@ void av_sha_final(AVSHA* ctx, uint8_t *digest)
         av_sha_update(ctx, "", 1);
     av_sha_update(ctx, (uint8_t *)&finalcount, 8); /* Should cause a transform() */
     for (i = 0; i < ctx->digest_len; i++)
-        ((uint32_t*)digest)[i] = be2me_32(ctx->state[i]);
+        AV_WN32(digest + i*4, be2me_32(ctx->state[i]));
 }
 
 #if LIBAVUTIL_VERSION_MAJOR < 51
-- 
GitLab