diff options
author | Evgeny Grin (Karlson2k) <k2k@narod.ru> | 2022-04-23 20:51:38 +0300 |
---|---|---|
committer | Evgeny Grin (Karlson2k) <k2k@narod.ru> | 2022-04-25 16:05:13 +0300 |
commit | 5da78f9d8d8018cd38db22dd1034f708597e4cf1 (patch) | |
tree | d99010fd9b16647c66d6c33cdc2554ecf30d8c4c | |
parent | 2a01697de41f0219f4e9aa9425894c3d82804d90 (diff) | |
download | libmicrohttpd-5da78f9d8d8018cd38db22dd1034f708597e4cf1.tar.gz libmicrohttpd-5da78f9d8d8018cd38db22dd1034f708597e4cf1.zip |
sha256.c: muted alignment warnings
-rw-r--r-- | src/microhttpd/sha256.c | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/src/microhttpd/sha256.c b/src/microhttpd/sha256.c index c81cfdcd..825b80b3 100644 --- a/src/microhttpd/sha256.c +++ b/src/microhttpd/sha256.c | |||
@@ -136,8 +136,11 @@ sha256_transform (uint32_t H[_SHA256_DIGEST_LENGTH], | |||
136 | See FIPS PUB 180-4 paragraph 6.2. | 136 | See FIPS PUB 180-4 paragraph 6.2. |
137 | Input data must be read in big-endian bytes order, | 137 | Input data must be read in big-endian bytes order, |
138 | see FIPS PUB 180-4 paragraph 3.1.2. */ | 138 | see FIPS PUB 180-4 paragraph 3.1.2. */ |
139 | /* Use cast to (const void*) to mute compiler alignment warning, | ||
140 | * data was already aligned in previous step */ | ||
139 | #define GET_W_FROM_DATA(buf,t) \ | 141 | #define GET_W_FROM_DATA(buf,t) \ |
140 | _MHD_GET_32BIT_BE (((const uint8_t*) (buf)) + (t) * SHA256_BYTES_IN_WORD) | 142 | _MHD_GET_32BIT_BE ((const void*)(((const uint8_t*) (buf)) + \ |
143 | (t) * SHA256_BYTES_IN_WORD)) | ||
141 | 144 | ||
142 | /* During first 16 steps, before making any calculations on each step, | 145 | /* During first 16 steps, before making any calculations on each step, |
143 | the W element is read from input data buffer as big-endian value and | 146 | the W element is read from input data buffer as big-endian value and |
@@ -432,14 +435,16 @@ MHD_SHA256_finish (void *ctx_, | |||
432 | if (1) | 435 | if (1) |
433 | #endif /* _MHD_PUT_32BIT_BE_UNALIGNED */ | 436 | #endif /* _MHD_PUT_32BIT_BE_UNALIGNED */ |
434 | { | 437 | { |
435 | _MHD_PUT_32BIT_BE (digest + 0 * SHA256_BYTES_IN_WORD, ctx->H[0]); | 438 | /* Use cast to (void*) here to mute compiler alignment warnings. |
436 | _MHD_PUT_32BIT_BE (digest + 1 * SHA256_BYTES_IN_WORD, ctx->H[1]); | 439 | * Compilers are not smart enough to see that alignment has been checked. */ |
437 | _MHD_PUT_32BIT_BE (digest + 2 * SHA256_BYTES_IN_WORD, ctx->H[2]); | 440 | _MHD_PUT_32BIT_BE ((void *) (digest + 0 * SHA256_BYTES_IN_WORD), ctx->H[0]); |
438 | _MHD_PUT_32BIT_BE (digest + 3 * SHA256_BYTES_IN_WORD, ctx->H[3]); | 441 | _MHD_PUT_32BIT_BE ((void *) (digest + 1 * SHA256_BYTES_IN_WORD), ctx->H[1]); |
439 | _MHD_PUT_32BIT_BE (digest + 4 * SHA256_BYTES_IN_WORD, ctx->H[4]); | 442 | _MHD_PUT_32BIT_BE ((void *) (digest + 2 * SHA256_BYTES_IN_WORD), ctx->H[2]); |
440 | _MHD_PUT_32BIT_BE (digest + 5 * SHA256_BYTES_IN_WORD, ctx->H[5]); | 443 | _MHD_PUT_32BIT_BE ((void *) (digest + 3 * SHA256_BYTES_IN_WORD), ctx->H[3]); |
441 | _MHD_PUT_32BIT_BE (digest + 6 * SHA256_BYTES_IN_WORD, ctx->H[6]); | 444 | _MHD_PUT_32BIT_BE ((void *) (digest + 4 * SHA256_BYTES_IN_WORD), ctx->H[4]); |
442 | _MHD_PUT_32BIT_BE (digest + 7 * SHA256_BYTES_IN_WORD, ctx->H[7]); | 445 | _MHD_PUT_32BIT_BE ((void *) (digest + 5 * SHA256_BYTES_IN_WORD), ctx->H[5]); |
446 | _MHD_PUT_32BIT_BE ((void *) (digest + 6 * SHA256_BYTES_IN_WORD), ctx->H[6]); | ||
447 | _MHD_PUT_32BIT_BE ((void *) (digest + 7 * SHA256_BYTES_IN_WORD), ctx->H[7]); | ||
443 | } | 448 | } |
444 | 449 | ||
445 | /* Erase potentially sensitive data. */ | 450 | /* Erase potentially sensitive data. */ |