Mercurial > hg > freeDiameter
comparison extensions/app_radgw/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 |
---|---|
284 os_memset(p, 0, count - 8); | 284 os_memset(p, 0, count - 8); |
285 } | 285 } |
286 byteReverse(ctx->in, 14); | 286 byteReverse(ctx->in, 14); |
287 | 287 |
288 /* Append length in bits and transform */ | 288 /* Append length in bits and transform */ |
289 ((u32 *) ctx->in)[14] = ctx->bits[0]; | 289 os_memcpy(&ctx->in[56], &ctx->bits[0], 8); |
290 ((u32 *) ctx->in)[15] = ctx->bits[1]; | |
291 | 290 |
292 MD5Transform(ctx->buf, (u32 *) ctx->in); | 291 MD5Transform(ctx->buf, (u32 *) ctx->in); |
293 byteReverse((unsigned char *) ctx->buf, 4); | 292 byteReverse((unsigned char *) ctx->buf, 4); |
294 os_memcpy(digest, ctx->buf, 16); | 293 os_memcpy(digest, ctx->buf, 16); |
295 os_memset(ctx, 0, sizeof(*ctx)); /* In case it's sensitive */ | 294 os_memset(ctx, 0, sizeof(*ctx)); /* In case it's sensitive */ |