--- crypto/apr_md5.c (revision 928399) +++ crypto/apr_md5.c (working copy) @@ -347,10 +347,15 @@ /* MD5 basic transformation. Transforms state based on block. */ static void MD5Transform(apr_uint32_t state[4], const unsigned char block[64]) { +#if !APR_IS_BIGENDIAN + apr_uint32_t a = state[0], b = state[1], c = state[2], d = state[3]; + const apr_uint32_t *x = (const apr_uint32_t*)(block); +#else apr_uint32_t a = state[0], b = state[1], c = state[2], d = state[3], x[APR_MD5_DIGESTSIZE]; Decode(x, block, 64); +#endif /* Round 1 */ FF(a, b, c, d, x[0], S11, 0xd76aa478); /* 1 */ @@ -429,8 +434,10 @@ state[2] += c; state[3] += d; +#if APR_IS_BIGENDIAN /* Zeroize sensitive information. */ memset(x, 0, sizeof(x)); +#endif } /* Encodes input (apr_uint32_t) into output (unsigned char). Assumes len is