diff --git a/daemon/libs/iax2/md5.c b/daemon/libs/iax2/md5.c index d84c66b892db0c669258ddb057537078e6cfc77f..3830a61fda83e0cd2bbb1e93f21e279896da1c50 100644 --- a/daemon/libs/iax2/md5.c +++ b/daemon/libs/iax2/md5.c @@ -116,7 +116,7 @@ void IAX_MD5Update(struct IAX_MD5Context *ctx, uint8_t const *buf, unsigned int } memcpy(p, buf, t); IAX_byteReverse(ctx->in, 16); - IAX_MD5Transform(ctx->buf, (uint32_t *) ctx->in); + IAX_MD5Transform(ctx->buf, ctx->in_32); buf += t; len -= t; } @@ -171,10 +171,10 @@ void IAX_MD5Final(uint8_t digest[16], struct IAX_MD5Context *ctx) IAX_byteReverse(ctx->in, 14); /* Append length in bits and transform */ - ((uint32_t *) ctx->in)[14] = ctx->bits[0]; - ((uint32_t *) ctx->in)[15] = ctx->bits[1]; + ctx->in_32[14] = ctx->bits[0]; + ctx->in_32[15] = ctx->bits[1]; - IAX_MD5Transform(ctx->buf, (uint32_t *) ctx->in); + IAX_MD5Transform(ctx->buf, ctx->in_32); IAX_byteReverse((uint8_t *) ctx->buf, 4); memcpy(digest, ctx->buf, 16); memset(ctx, 0, sizeof(*ctx)); /* In case it's sensitive */ diff --git a/daemon/libs/iax2/md5.h b/daemon/libs/iax2/md5.h index b3ad37a9b36532268cc9f3e62d909963c70e8e01..f54b68bfb27de352d4143230a5cbffddd175606b 100644 --- a/daemon/libs/iax2/md5.h +++ b/daemon/libs/iax2/md5.h @@ -11,7 +11,10 @@ typedef unsigned char uint8_t; struct IAX_MD5Context { uint32_t buf[4]; uint32_t bits[2]; - uint8_t in[64]; + union { + uint8_t in[64]; + uint32_t in_32[16]; + }; }; void IAX_MD5Init(struct IAX_MD5Context *context);