Mercurial > hg > freeDiameter
comparison extensions/app_sip/md5.c @ 1414:f6f12521c2aa
Fix strict-aliasing warnings with gcc 4.8
Rewrite IN6_ADDR_V4MAP() to not rely upon aliasing rules.
Add test for IN6_ADDR_V4MAP() and IN6_ADDR_V4UNMAP().
Rewrite MD5Final() to not rely upon aliasing rules. (Not tested)
author | Luke Mewburn <luke@mewburn.net> |
---|---|
date | Tue, 18 Feb 2020 19:01:49 +1100 |
parents | 0fa8207cc91a |
children |
comparison
equal
deleted
inserted
replaced
1413:1979715b744f | 1414:f6f12521c2aa |
---|---|
307 os_memset(p, 0, count - 8); | 307 os_memset(p, 0, count - 8); |
308 } | 308 } |
309 byteReverse(ctx->in, 14); | 309 byteReverse(ctx->in, 14); |
310 | 310 |
311 /* Append length in bits and transform */ | 311 /* Append length in bits and transform */ |
312 ((u32 *) ctx->in)[14] = ctx->bits[0]; | 312 os_memcpy(&ctx->in[56], &ctx->bits[0], 8); |
313 ((u32 *) ctx->in)[15] = ctx->bits[1]; | |
314 | 313 |
315 MD5Transform(ctx->buf, (u32 *) ctx->in); | 314 MD5Transform(ctx->buf, (u32 *) ctx->in); |
316 byteReverse((unsigned char *) ctx->buf, 4); | 315 byteReverse((unsigned char *) ctx->buf, 4); |
317 os_memcpy(digest, ctx->buf, 16); | 316 os_memcpy(digest, ctx->buf, 16); |
318 os_memset(ctx, 0, sizeof(*ctx)); /* In case it's sensitive */ | 317 os_memset(ctx, 0, sizeof(*ctx)); /* In case it's sensitive */ |