From 8aa538cfd5a2bcdfc54aced86c7c17b502742fc6 Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Thu, 29 Nov 2001 19:40:37 +0000
Subject: [PATCH] * When postgres.h does not define BYTE_ENDIAN pgcrypto  
 produces garbage.

I learned the hard way that

        #if UNDEFINED_1 == UNDEFINED_2
        #error "gcc is idiot"
        #endif

prints "gcc is idiot" ...

Affected are MD5/SHA1 in internal library, and also HMAC-MD5/HMAC-SHA1/
crypt-md5 which use them.  Blowfish is ok, also Rijndael on at
least x86.

Big thanks to Daniel Holtzman who send me a build log which
contained warning:

        md5.c:246: warning: `X' defined but not used

Yes, gcc is that helpful...

Please apply this.

--
marko
---
 contrib/pgcrypto/blf.c            |  2 ++
 contrib/pgcrypto/crypt-blowfish.c |  2 ++
 contrib/pgcrypto/crypt-des.c      |  1 +
 contrib/pgcrypto/crypt-gensalt.c  |  1 +
 contrib/pgcrypto/md5.c            |  3 ++-
 contrib/pgcrypto/px.h             | 11 ++++++++++-
 contrib/pgcrypto/rijndael.c       |  1 +
 contrib/pgcrypto/sha1.c           |  3 ++-
 8 files changed, 21 insertions(+), 3 deletions(-)

diff --git a/contrib/pgcrypto/blf.c b/contrib/pgcrypto/blf.c
index e465bfe48a4..bab59c15040 100644
--- a/contrib/pgcrypto/blf.c
+++ b/contrib/pgcrypto/blf.c
@@ -41,6 +41,8 @@
  */
 
 #include <postgres.h>
+#include "px.h"
+
 #include "blf.h"
 
 #undef inline
diff --git a/contrib/pgcrypto/crypt-blowfish.c b/contrib/pgcrypto/crypt-blowfish.c
index 8ec2b188e04..8e41771be98 100644
--- a/contrib/pgcrypto/crypt-blowfish.c
+++ b/contrib/pgcrypto/crypt-blowfish.c
@@ -32,7 +32,9 @@
 
 #include "postgres.h"
 
+#include "px.h"
 #include "px-crypt.h"
+
 #define __set_errno(v)
 
 #ifndef __set_errno
diff --git a/contrib/pgcrypto/crypt-des.c b/contrib/pgcrypto/crypt-des.c
index 782f4c0ddbd..dc14ceae66d 100644
--- a/contrib/pgcrypto/crypt-des.c
+++ b/contrib/pgcrypto/crypt-des.c
@@ -60,6 +60,7 @@
 
 #include "postgres.h"
 
+#include "px.h"
 #include "px-crypt.h"
 
 /* for ntohl/htonl */
diff --git a/contrib/pgcrypto/crypt-gensalt.c b/contrib/pgcrypto/crypt-gensalt.c
index 9c017b0e4d0..c58e794789f 100644
--- a/contrib/pgcrypto/crypt-gensalt.c
+++ b/contrib/pgcrypto/crypt-gensalt.c
@@ -12,6 +12,7 @@
 
 #include "postgres.h"
 
+#include "px.h"
 #include "px-crypt.h"
 
 #include <errno.h>
diff --git a/contrib/pgcrypto/md5.c b/contrib/pgcrypto/md5.c
index 4b03f196067..a44ea6f8578 100644
--- a/contrib/pgcrypto/md5.c
+++ b/contrib/pgcrypto/md5.c
@@ -1,4 +1,4 @@
-/*	$Id: md5.c,v 1.8 2001/10/25 05:49:19 momjian Exp $	*/
+/*	$Id: md5.c,v 1.9 2001/11/29 19:40:37 momjian Exp $	*/
 /*	   $KAME: md5.c,v 1.3 2000/02/22 14:01:17 itojun Exp $	   */
 
 /*
@@ -31,6 +31,7 @@
  */
 
 #include "postgres.h"
+#include "px.h"
 
 #include "md5.h"
 
diff --git a/contrib/pgcrypto/px.h b/contrib/pgcrypto/px.h
index 9cfa86d8b7d..570dadf9198 100644
--- a/contrib/pgcrypto/px.h
+++ b/contrib/pgcrypto/px.h
@@ -26,12 +26,21 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Id: px.h,v 1.5 2001/11/20 15:50:53 momjian Exp $
+ * $Id: px.h,v 1.6 2001/11/29 19:40:37 momjian Exp $
  */
 
 #ifndef __PX_H
 #define __PX_H
 
+#ifdef HAVE_ENDIAN_H
+#include <endian.h>
+#endif
+
+#ifndef BYTE_ORDER
+#error BYTE_ORDER must be defined as LITTLE_ENDIAN or BIG_ENDIAN
+#endif
+
+
 #if 1
 
 #define px_alloc(s) palloc(s)
diff --git a/contrib/pgcrypto/rijndael.c b/contrib/pgcrypto/rijndael.c
index ad90bd9dbee..fd4572a8e99 100644
--- a/contrib/pgcrypto/rijndael.c
+++ b/contrib/pgcrypto/rijndael.c
@@ -39,6 +39,7 @@ Mean:		   500 cycles =    51.2 mbits/sec
 */
 
 #include <postgres.h>
+#include "px.h"
 
 #include "rijndael.h"
 
diff --git a/contrib/pgcrypto/sha1.c b/contrib/pgcrypto/sha1.c
index 01bd072089f..4f9a1b39849 100644
--- a/contrib/pgcrypto/sha1.c
+++ b/contrib/pgcrypto/sha1.c
@@ -1,4 +1,4 @@
-/*	$Id: sha1.c,v 1.10 2001/11/05 17:46:23 momjian Exp $ */
+/*	$Id: sha1.c,v 1.11 2001/11/29 19:40:37 momjian Exp $ */
 /*	   $KAME: sha1.c,v 1.3 2000/02/22 14:01:18 itojun Exp $    */
 
 /*
@@ -36,6 +36,7 @@
  */
 
 #include "postgres.h"
+#include "px.h"
 
 #include "sha1.h"
 
-- 
GitLab