postgres.git / summary / log / commit / refs
commit 7696b2ea52416cc2f4046a359d3b6f760e4c013d
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Date: Wed Aug 07 07:43:52 2024 +0000
Make fallback MD5 implementation thread-safe on big-endian systems
Replace a static scratch buffer with a local variable, because a
static buffer makes the function not thread-safe. This function is
used in client-code in libpq, so it needs to be thread-safe. It was
until commit b67b57a966, which replaced the implementation with the
one from pgcrypto.
Backpatch to v14, where we switched to the new implementation.
Reviewed-by: Robert Haas, Michael Paquier
Discussion: https://www.postgresql.org/message-id/dfa2015d-ad21-4802-a4cc-3850fc5fff3f@iki.fi
src/common/md5.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/src/common/md5.c b/src/common/md5.c
index 7d3b639f29d..aa1358982ed 100644
--- a/src/common/md5.c
+++ b/src/common/md5.c
@@ -150,10 +150,6 @@ static const uint8 md5_paddat[MD5_BUFLEN] = {
0, 0, 0, 0, 0, 0, 0, 0,
};
-#ifdef WORDS_BIGENDIAN
-static uint32 X[16];
-#endif
-
static void
md5_calc(const uint8 *b64, pg_md5_ctx *ctx)
{
@@ -167,6 +163,7 @@ md5_calc(const uint8 *b64, pg_md5_ctx *ctx)
#else
/* 4 byte words */
/* what a brute force but fast! */
+ uint32 X[16];
uint8 *y = (uint8 *) X;
y[0] = b64[3];
[parent: 33965476b6ef]