aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvgeny Grin (Karlson2k) <k2k@narod.ru>2022-04-23 20:52:35 +0300
committerEvgeny Grin (Karlson2k) <k2k@narod.ru>2022-04-25 16:05:14 +0300
commit9c7c06d8b8e8beb7f45107e51ed19c1be816c762 (patch)
tree812ff0b68feddd9636f684b9e3836486f86f9a5e
parent851b406174e3ac796f702a9764c139d87d305659 (diff)
downloadlibmicrohttpd-9c7c06d8b8e8beb7f45107e51ed19c1be816c762.tar.gz
libmicrohttpd-9c7c06d8b8e8beb7f45107e51ed19c1be816c762.zip
sha1.c: muted alignment warnings
-rw-r--r--src/microhttpd/sha1.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/microhttpd/sha1.c b/src/microhttpd/sha1.c
index 1e9da5c7..be9f73ab 100644
--- a/src/microhttpd/sha1.c
+++ b/src/microhttpd/sha1.c
@@ -105,8 +105,11 @@ sha1_transform (uint32_t H[_SHA1_DIGEST_LENGTH],
105 See FIPS PUB 180-4 paragraph 6.1.3. 105 See FIPS PUB 180-4 paragraph 6.1.3.
106 Input data must be read in big-endian bytes order, 106 Input data must be read in big-endian bytes order,
107 see FIPS PUB 180-4 paragraph 3.1.2. */ 107 see FIPS PUB 180-4 paragraph 3.1.2. */
108 /* Use cast to (void*) to mute compiler alignment warning,
109 * data was already aligned in previous step */
108#define GET_W_FROM_DATA(buf,t) \ 110#define GET_W_FROM_DATA(buf,t) \
109 _MHD_GET_32BIT_BE (((const uint8_t*) (buf)) + (t) * SHA1_BYTES_IN_WORD) 111 _MHD_GET_32BIT_BE ((const void *)(((const uint8_t*) (buf)) + \
112 (t) * SHA1_BYTES_IN_WORD))
110 113
111#ifndef _MHD_GET_32BIT_BE_UNALIGNED 114#ifndef _MHD_GET_32BIT_BE_UNALIGNED
112 if (0 != (((uintptr_t) data) % _MHD_UINT32_ALIGN)) 115 if (0 != (((uintptr_t) data) % _MHD_UINT32_ALIGN))
@@ -366,11 +369,13 @@ MHD_SHA1_finish (void *ctx_,
366 if (1) 369 if (1)
367#endif /* _MHD_PUT_32BIT_BE_UNALIGNED */ 370#endif /* _MHD_PUT_32BIT_BE_UNALIGNED */
368 { 371 {
369 _MHD_PUT_32BIT_BE (digest + 0 * SHA1_BYTES_IN_WORD, ctx->H[0]); 372 /* Use cast to (void*) here to mute compiler alignment warnings.
370 _MHD_PUT_32BIT_BE (digest + 1 * SHA1_BYTES_IN_WORD, ctx->H[1]); 373 * Compilers are not smart enough to see that alignment has been checked. */
371 _MHD_PUT_32BIT_BE (digest + 2 * SHA1_BYTES_IN_WORD, ctx->H[2]); 374 _MHD_PUT_32BIT_BE ((void *) (digest + 0 * SHA1_BYTES_IN_WORD), ctx->H[0]);
372 _MHD_PUT_32BIT_BE (digest + 3 * SHA1_BYTES_IN_WORD, ctx->H[3]); 375 _MHD_PUT_32BIT_BE ((void *) (digest + 1 * SHA1_BYTES_IN_WORD), ctx->H[1]);
373 _MHD_PUT_32BIT_BE (digest + 4 * SHA1_BYTES_IN_WORD, ctx->H[4]); 376 _MHD_PUT_32BIT_BE ((void *) (digest + 2 * SHA1_BYTES_IN_WORD), ctx->H[2]);
377 _MHD_PUT_32BIT_BE ((void *) (digest + 3 * SHA1_BYTES_IN_WORD), ctx->H[3]);
378 _MHD_PUT_32BIT_BE ((void *) (digest + 4 * SHA1_BYTES_IN_WORD), ctx->H[4]);
374 } 379 }
375 380
376 /* Erase potentially sensitive data. */ 381 /* Erase potentially sensitive data. */