diff --git a/src/include/libpq/md5.h b/src/include/libpq/md5.h
index 13faa19147556e61c366c6a0de26b7113a3dab5e..34e901a67a8901199b54413019324e303a18f64e 100644
--- a/src/include/libpq/md5.h
+++ b/src/include/libpq/md5.h
@@ -16,10 +16,12 @@
 #ifndef PG_MD5_H
 #define PG_MD5_H
 
+#define MD5_PASSWD_CHARSET "0123456789abcdef"
 #define MD5_PASSWD_LEN	35
 
 #define isMD5(passwd)	(strncmp(passwd, "md5", 3) == 0 && \
-						 strlen(passwd) == MD5_PASSWD_LEN)
+						 strlen(passwd) == MD5_PASSWD_LEN && \
+						 strspn(passwd + 3, MD5_PASSWD_CHARSET) == MD5_PASSWD_LEN - 3)
 
 
 extern bool pg_md5_hash(const void *buff, size_t len, char *hexsum);