Add important fix for MD5-based password hashes on non-Alpha 64-bit architectures...
authorDiego Elio Pettenò <flameeyes@gentoo.org>
Wed, 7 Apr 2010 14:35:55 +0000 (14:35 +0000)
committerDiego Elio Pettenò <flameeyes@gentoo.org>
Wed, 7 Apr 2010 14:35:55 +0000 (14:35 +0000)
Package-Manager: portage-2.2_rc67/cvs/Linux x86_64

sys-auth/pam-pgsql/ChangeLog
sys-auth/pam-pgsql/Manifest
sys-auth/pam-pgsql/files/pam-pgsql-0.7.1-64bit.patch [new file with mode: 0644]
sys-auth/pam-pgsql/pam-pgsql-0.7.1-r1.ebuild [moved from sys-auth/pam-pgsql/pam-pgsql-0.7.1.ebuild with 91% similarity]

index 6cf573c635b707d63119258e8ad3a2d9fe1e1464..b244b06b0e1a68675cf6d1b0fe24db69560dd645 100644 (file)
@@ -1,6 +1,14 @@
 # ChangeLog for sys-auth/pam-pgsql
 # Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/sys-auth/pam-pgsql/ChangeLog,v 1.3 2010/03/16 11:56:16 flameeyes Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-auth/pam-pgsql/ChangeLog,v 1.4 2010/04/07 14:35:55 flameeyes Exp $
+
+*pam-pgsql-0.7.1-r1 (07 Apr 2010)
+
+  07 Apr 2010; Diego E. Pettenò <flameeyes@gentoo.org>
+  -pam-pgsql-0.7.1.ebuild, +pam-pgsql-0.7.1-r1.ebuild,
+  +files/pam-pgsql-0.7.1-64bit.patch:
+  Add important fix for MD5-based password hashes on non-Alpha 64-bit
+  architectures. Thanks to Petr Bravenec for reporting.
 
 *pam-pgsql-0.7.1 (16 Mar 2010)
 
index fa46952f92926a0e7e573868cb290d846b70b87b..08796c924c08d3fc1bdde1c7c636911c022f59e2 100644 (file)
@@ -1,14 +1,15 @@
 -----BEGIN PGP SIGNED MESSAGE-----
 Hash: SHA1
 
+AUX pam-pgsql-0.7.1-64bit.patch 4270 RMD160 5070f30d86fad0b107516ce4fff6ab2f5503423e SHA1 df223af4db78c9102ff5672dad77645d41c79343 SHA256 99b57bd409544d9977c7f1521d7d268bac6674cb32535f40bbf8d9511a0517df
 DIST pam-pgsql-0.7.1.tar.gz 304824 RMD160 4bde31c836d5a2204e904111f5eb953ce529f1e6 SHA1 bd62b6d66c3972e244e90f7228dc082796957870 SHA256 952b0baff182c270fd4027f75ee6b5663d430bd129067ada80b61d33e8fe9f19
-EBUILD pam-pgsql-0.7.1.ebuild 1347 RMD160 1ee1e952aad70f6f87899d5c358cefaba5336ba0 SHA1 8bfd40918724717bae86c761817338ed3160fe61 SHA256 afd764d23e47d8a0d24ee6ad303601d753d43d80e1eec82c64f6f2be1a41c504
-MISC ChangeLog 1064 RMD160 b91ef70a73c690825e87ba4ef268378a176c0d02 SHA1 f697c683b4d30aa66279408f274de9596c4c663d SHA256 6b7a5a4f5a24b8a46f473dc6c9e7f5f865ae7b66cab1bb28d9f104f8b3339741
+EBUILD pam-pgsql-0.7.1-r1.ebuild 1408 RMD160 fb062403b7f288374317f70be22694a051536b08 SHA1 455739b7bcd6a5273f036281faf1a8e5a3f0dc37 SHA256 162b981d51b718e08134a927827976f23118d3cc399085281e0da8b476aaecfd
+MISC ChangeLog 1375 RMD160 b5f820c1eb6c6318706e44ac15ddd8b481d936c2 SHA1 bbd49c3ef1ce694323549f64b7bacf781cf04ed7 SHA256 78b90c045efa39d94446a0a0bbf7adee39035f5ac61d4076629177ba57e58fea
 MISC metadata.xml 218 RMD160 1955c7446d4ceb77506ba7b58ee35913c576a72c SHA1 02dacc356a39905402083cb54ae4f6dd0ac59fad SHA256 e0bb49cab71cc84d8bdad26876197164073722b378d27a5bf55bbfd2afdbd19c
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2.0.14 (GNU/Linux)
 
-iEYEARECAAYFAkufceEACgkQAiZjviIA2XghFACfZ05zOWOxJsSUnco3eoeSq22f
-6uUAn2QhRmN8CRhh2EpoBH50Z/7UmXL2
-=NKOO
+iEYEARECAAYFAku8mFgACgkQAiZjviIA2XitdQCdESVb4wBKjwVURDlPqieTKaHm
+ZncAn1L2rK1YRScq2RJaddFIWy9SFjAH
+=+1CQ
 -----END PGP SIGNATURE-----
diff --git a/sys-auth/pam-pgsql/files/pam-pgsql-0.7.1-64bit.patch b/sys-auth/pam-pgsql/files/pam-pgsql-0.7.1-64bit.patch
new file mode 100644 (file)
index 0000000..94f171a
--- /dev/null
@@ -0,0 +1,138 @@
+From 30361fa5f3266c0f088bbc89eb06dddbd032fc54 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Diego=20Elio=20'Flameeyes'=20Petten=C3=B2?= <flameeyes@gmail.com>
+Date: Wed, 7 Apr 2010 15:58:04 +0200
+Subject: [PATCH] Fix md5 code under 64-bit platforms.
+
+The code was previously singling out the Alpha platform as 64-bit, but
+that's definitely not the only platform where unsigned long is 64-bit
+rather than 32.
+
+This change actually relies on C89 standard integers (uint32_t) so that
+there is no more risk of getting it wrong.
+---
+ src/md5.c |   28 ++++++++++++++--------------
+ src/md5.h |   10 +++-------
+ 2 files changed, 17 insertions(+), 21 deletions(-)
+
+diff --git a/src/md5.c b/src/md5.c
+index 3b51e76..df24f16 100644
+--- a/src/md5.c
++++ b/src/md5.c
+@@ -17,7 +17,7 @@
+ #include <string.h>           /* for memcpy() */
+ #include "md5.h"
+ 
+-static void MD5Transform(uint32 buf[4], uint32 const in[16]);
++static void MD5Transform(uint32_t buf[4], uint32_t const in[16]);
+ 
+ #ifndef HIGHFIRST
+ #define byteReverse(buf, len) /* Nothing */
+@@ -30,11 +30,11 @@ void byteReverse(unsigned char *buf, unsigned longs);
+  */
+ void byteReverse(unsigned char *buf, unsigned longs)
+ {
+-    uint32 t;
++    uint32_t t;
+     do {
+-      t = (uint32) ((unsigned) buf[3] << 8 | buf[2]) << 16 |
++      t = (uint32_t) ((unsigned) buf[3] << 8 | buf[2]) << 16 |
+           ((unsigned) buf[1] << 8 | buf[0]);
+-      *(uint32 *) buf = t;
++      *(uint32_t *) buf = t;
+       buf += 4;
+     } while (--longs);
+ }
+@@ -62,12 +62,12 @@ void MD5Init(struct MD5Context *ctx)
+  */
+ void MD5Update(struct MD5Context *ctx, unsigned char const *buf, unsigned len)
+ {
+-    uint32 t;
++    uint32_t t;
+ 
+     /* Update bitcount */
+ 
+     t = ctx->bits[0];
+-    if ((ctx->bits[0] = t + ((uint32) len << 3)) < t)
++    if ((ctx->bits[0] = t + ((uint32_t) len << 3)) < t)
+       ctx->bits[1]++;         /* Carry from low to high */
+     ctx->bits[1] += len >> 29;
+ 
+@@ -85,7 +85,7 @@ void MD5Update(struct MD5Context *ctx, unsigned char const *buf, unsigned len)
+       }
+       memcpy(p, buf, t);
+       byteReverse(ctx->in, 16);
+-      MD5Transform(ctx->buf, (uint32 *) ctx->in);
++      MD5Transform(ctx->buf, (uint32_t *) ctx->in);
+       buf += t;
+       len -= t;
+     }
+@@ -94,7 +94,7 @@ void MD5Update(struct MD5Context *ctx, unsigned char const *buf, unsigned len)
+     while (len >= 64) {
+       memcpy(ctx->in, buf, 64);
+       byteReverse(ctx->in, 16);
+-      MD5Transform(ctx->buf, (uint32 *) ctx->in);
++      MD5Transform(ctx->buf, (uint32_t *) ctx->in);
+       buf += 64;
+       len -= 64;
+     }
+@@ -129,7 +129,7 @@ void MD5Final(unsigned char *digest, struct MD5Context *ctx)
+       /* Two lots of padding:  Pad the first block to 64 bytes */
+       memset(p, 0, count);
+       byteReverse(ctx->in, 16);
+-      MD5Transform(ctx->buf, (uint32 *) ctx->in);
++      MD5Transform(ctx->buf, (uint32_t *) ctx->in);
+ 
+       /* Now fill the next block with 56 bytes */
+       memset(ctx->in, 0, 56);
+@@ -140,10 +140,10 @@ void MD5Final(unsigned char *digest, struct MD5Context *ctx)
+     byteReverse(ctx->in, 14);
+ 
+     /* Append length in bits and transform */
+-    ((uint32 *) ctx->in)[14] = ctx->bits[0];
+-    ((uint32 *) ctx->in)[15] = ctx->bits[1];
++    ((uint32_t *) ctx->in)[14] = ctx->bits[0];
++    ((uint32_t *) ctx->in)[15] = ctx->bits[1];
+ 
+-    MD5Transform(ctx->buf, (uint32 *) ctx->in);
++    MD5Transform(ctx->buf, (uint32_t *) ctx->in);
+     byteReverse((unsigned char *) ctx->buf, 4);
+     memcpy(digest, ctx->buf, 16);
+     memset(ctx, 0, sizeof(ctx));      /* In case it's sensitive */
+@@ -173,9 +173,9 @@ void MD5Final(unsigned char *digest, struct MD5Context *ctx)
+  * reflect the addition of 16 longwords of new data.  MD5Update blocks
+  * the data and converts bytes into longwords for this routine.
+  */
+-static void MD5Transform(uint32 buf[4], uint32 const in[16])
++static void MD5Transform(uint32_t buf[4], uint32_t const in[16])
+ {
+-    register uint32 a, b, c, d;
++    register uint32_t a, b, c, d;
+ 
+     a = buf[0];
+     b = buf[1];
+diff --git a/src/md5.h b/src/md5.h
+index 6d8d047..a8a952f 100644
+--- a/src/md5.h
++++ b/src/md5.h
+@@ -1,15 +1,11 @@
+ #ifndef MD5_H
+ #define MD5_H
+ 
+-#ifdef __alpha
+-typedef unsigned int uint32;
+-#else
+-typedef unsigned long uint32;
+-#endif
++#include <stdint.h>
+ 
+ struct MD5Context {
+-      uint32 buf[4];
+-      uint32 bits[2];
++      uint32_t buf[4];
++      uint32_t bits[2];
+       unsigned char in[64];
+ };
+ 
+-- 
+1.7.0.4
+
similarity index 91%
rename from sys-auth/pam-pgsql/pam-pgsql-0.7.1.ebuild
rename to sys-auth/pam-pgsql/pam-pgsql-0.7.1-r1.ebuild
index 1152c58aeae6b1ed7a42cdd5694693991143cf9e..e54e641dcfea2e31d321314936446aae09762fe9 100644 (file)
@@ -1,6 +1,6 @@
 # Copyright 1999-2010 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-auth/pam-pgsql/pam-pgsql-0.7.1.ebuild,v 1.1 2010/03/16 11:56:16 flameeyes Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-auth/pam-pgsql/pam-pgsql-0.7.1-r1.ebuild,v 1.1 2010/04/07 14:35:55 flameeyes Exp $
 
 EAPI=2
 
@@ -25,6 +25,10 @@ IUSE=""
 SLOT="0"
 KEYWORDS="~amd64 ~x86"
 
+src_prepare() {
+       epatch "${FILESDIR}"/${P}-64bit.patch
+}
+
 src_configure() {
        econf \
                --sysconfdir=/etc/security \