Preparing a release gpg4win-1.0.7
authorWerner Koch <wk@gnupg.org>
Fri, 13 Oct 2006 07:51:15 +0000 (07:51 +0000)
committerWerner Koch <wk@gnupg.org>
Fri, 13 Oct 2006 07:51:15 +0000 (07:51 +0000)
ChangeLog
Makefile.am
NEWS
autogen.sh
configure.ac
packages/packages.current
patches/gnupg-1.4.5/01-uncompress.patch [new file with mode: 0755]

index 9ff7eef..250cf44 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2006-10-13  Werner Koch  <wk@g10code.com>
+
+       Released 1.0.7.
+
+       * patches/gnupg-1.4.5/01-uncompress.patch: New.
+
 2006-08-28  Werner Koch  <wk@g10code.com>
 
        Released 1.0.6.
index 4f7dc4c..95bbd51 100644 (file)
@@ -25,6 +25,7 @@ SUBDIRS = packages include doc src
 
 EXTRA_DIST = autogen.sh README.SVN \
        patches/gnupg-1.4.4/01-reopen-std.patch \
+       patches/gnupg-1.4.5/01-uncompress.patch \
        patches/gpgme-1.1.0/01-gpgme-def.patch \
        patches/gpgme-1.1.0/02-libtool-dll.patch \
         patches/pthreads-w32-2-7-0-release/01-make.patch \
diff --git a/NEWS b/NEWS
index 851898a..cbfbaff 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -6,6 +6,29 @@
 Noteworthy changes in version 1.0.7
 ------------------------------------------------
 
+(en) Packaged new versions of GPGol and WinPT.
+(de) Neue Versionen von GPGol und WinPT.
+
+(en) Fixed a bug while decrypting certain compressed and encrypted
+     messages. 
+(de) Ein Fehler beim Entschl├╝sseln einiger komprimierter und
+     verschl├╝sselter Nachrichten wurde behoben.
+
+(en) Fixed a crash in GPGol.
+(de) Ein Absturz von GPGOl wurde behoben.
+
+
+~~~~~~~~~~~~~~~
+GnuPG: 1.4.5
+WinPT: 1.0.1
+GPA:   0.7.4
+GPGol: 0.9.91
+GPGee: 1.3.1
+Sylpheed-Claws: 2.4.0
+Einsteiger:     2.0.2
+Durchblicker:   2.0.2
+~~~~~~~~~~~~~~~
+
 
 Noteworthy changes in version 1.0.6 (2006-08-28)
 ------------------------------------------------
index e4aab4e..5174237 100755 (executable)
@@ -52,14 +52,18 @@ if test "$1" = "--build-w32"; then
     [ -z "$w32root" ] && w32root="$HOME/w32root"
     echo "Using $w32root as standard install directory" >&2
     
-    # See whether we have the Debian cross compiler package or the
-    # old mingw32/cpd system
-    if i586-mingw32msvc-gcc --version >/dev/null 2>&1 ; then
-        host=i586-mingw32msvc
-        crossbindir=/usr/$host/bin
-    else
+    # Locate the cross compiler
+    crossbindir=
+    for host in i586-mingw32msvc i386-mingw32msvc; do
+        if ${host}-gcc --version >/dev/null 2>&1 ; then
+            crossbindir=/usr/${host}/bin
+            break;
+        fi
+    done
+
+    if [ -z "$crossbindir" ]; then
         echo "Cross compiler kit not installed" >&2
-        echo "Under Debian GNU/LInux, you may install it using" >&2
+        echo "Under Debian GNU/Linux, you may install it using" >&2
         echo "  apt-get install mingw32 mingw32-runtime mingw32-binutils" >&2 
         echo "Stop." >&2
         exit 1
@@ -72,8 +76,7 @@ if test "$1" = "--build-w32"; then
         fi
     fi
 
-    ./configure --host=i586-mingw32msvc --build=${build}  "$@"\
-
+    ./configure --host=${host} --build=${build}  "$@"
     rc=$?
 
     exit $rc
index 26099a2..9ca4882 100644 (file)
@@ -27,7 +27,7 @@ min_automake_version="1.9.3"
 # "svn up" and "autogen.sh" right before creating a distribution.
 # Right after a release the make target "copy-news" is to be called!
 m4_define([my_version], [1.0.7])
-m4_define([my_issvn], [yes])
+m4_define([my_issvn], [no])
 
 m4_define([svn_revision], m4_esyscmd([echo -n $((svn info 2>/dev/null \
           ||echo 'Revision: 0')|sed -n '/^Revision:/ s/[^0-9]//gp'|head -1)]))
index 17df1c4..4f8e09a 100644 (file)
@@ -144,8 +144,11 @@ chk  1019c8027c0cf94bca680886f4e2ae4e629a2a97
 
 server http://wald.intevation.org/frs/download.php
 
-file  265/winpt-1.0.0.tar.bz2
-chk   7a3589a0ce3a81e3b94547ffdd76bf53d51e919f  
+#file  265/winpt-1.0.0.tar.bz2
+#chk   7a3589a0ce3a81e3b94547ffdd76bf53d51e919f  
+
+file  272/winpt-1.0.1.tar.bz2
+chk   574b7766701aaaef6e388d8b3ad68a171c9c071f
 
 
 # GPGee
@@ -169,8 +172,12 @@ chk  b04fa9ea81fc77844c7aa2e3eda042d819d8e9f1
 # GPGol
 server ftp://ftp.g10code.com/g10code/gpgol
 
-file gpgol-0.9.90.tar.bz2
-chk 54d6d42d613804ce646d72a9e40b1c1cabfcacb7
+#file gpgol-0.9.90.tar.bz2
+#chk 54d6d42d613804ce646d72a9e40b1c1cabfcacb7
+
+file gpgol-0.9.91.tar.bz2
+chk  391eee90ea072ea181bed332b9411f2a43395e7e
+
 
 # GnuPG stuff. 
 
diff --git a/patches/gnupg-1.4.5/01-uncompress.patch b/patches/gnupg-1.4.5/01-uncompress.patch
new file mode 100755 (executable)
index 0000000..8118b5f
--- /dev/null
@@ -0,0 +1,132 @@
+#! /bin/sh
+patch -p0 -f $* < $0
+exit $?
+
+Fixes a bug while decrypting certain compressed and encrypted
+messages. See http://bugs.gnupg.org/537 .
+
+
+2006-10-02  Werner Koch  <wk@g10code.com>
+
+       * encr-data.c (decrypt_data, mdc_decode_filter): Check the MDC
+       right here and don't let parse-packet handle the MDC.
+
+
+
+--- g10/encr-data.c    (.../tags/gnupg-1.4.5/g10/encr-data.c)  (revision 4280)
++++ g10/encr-data.c    (.../branches/STABLE-BRANCH-1-4/g10/encr-data.c)        (revision 4280)
+@@ -1,5 +1,6 @@
+ /* encr-data.c -  process an encrypted data packet
+- * Copyright (C) 1998, 1999, 2000, 2001, 2005 Free Software Foundation, Inc.
++ * Copyright (C) 1998, 1999, 2000, 2001, 2005,
++ *               2006  Free Software Foundation, Inc.
+  *
+  * This file is part of GnuPG.
+  *
+@@ -41,7 +42,7 @@
+ typedef struct {
+     CIPHER_HANDLE cipher_hd;
+     MD_HANDLE mdc_hash;
+-    char defer[20];
++    char defer[22];
+     int  defer_filled;
+     int  eof_seen;
+ } decode_filter_ctx_t;
+@@ -146,12 +147,30 @@
+     if( ed->mdc_method && dfx.eof_seen == 2 )
+       rc = G10ERR_INVALID_PACKET;
+     else if( ed->mdc_method ) { /* check the mdc */
++        /* We used to let parse-packet.c handle the MDC packet but
++           this turned out to be a problem with compressed packets:
++           With old style packets there is no length information
++           available and the decompressor uses an implicit end.
++           However we can't know this implicit end beforehand (:-) and
++           thus may feed the decompressor with more bytes than
++           actually needed.  It would be possible to unread the extra
++           bytes but due to our weird iobuf system any unread is non
++           reliable due to filters already popped off.  The easy and
++           sane solution is to care about the MDC packet only here and
++           never pass it to the packet parser.  Fortunatley the
++           OpenPGP spec requires a strict format for the MDC packet so
++           that we know that 22 bytes are appended.  */
+       int datalen = md_digest_length( ed->mdc_method );
+-      cipher_decrypt( dfx.cipher_hd, dfx.defer, dfx.defer, 20);
++      cipher_decrypt( dfx.cipher_hd, dfx.defer, dfx.defer, 22);
++        md_write (dfx.mdc_hash, dfx.defer, 2);
+       md_final( dfx.mdc_hash );
+-      if( datalen != 20
+-          || memcmp(md_read( dfx.mdc_hash, 0 ), dfx.defer, datalen) )
++        if (dfx.defer[0] != '\xd3' || dfx.defer[1] != '\x14' ) {
++            log_error("mdc_packet with invalid encoding\n");
++            rc = G10ERR_INVALID_PACKET;
++        }
++      else if ( datalen != 20
++          || memcmp(md_read( dfx.mdc_hash, 0 ), dfx.defer+2, datalen) )
+           rc = G10ERR_BAD_SIGN;
+       /*log_hexdump("MDC calculated:", md_read( dfx.mdc_hash, 0), datalen);*/
+       /*log_hexdump("MDC message   :", dfx.defer, 20);*/
+@@ -182,23 +201,23 @@
+     }
+     else if( control == IOBUFCTRL_UNDERFLOW ) {
+       assert(a);
+-      assert( size > 40 );
++      assert( size > 44 );
+       /* get at least 20 bytes and put it somewhere ahead in the buffer */
+-      for(n=20; n < 40 ; n++ ) {
++      for(n=22; n < 44 ; n++ ) {
+           if( (c = iobuf_get(a)) == -1 )
+               break;
+           buf[n] = c;
+       }
+-      if( n == 40 ) {
++      if( n == 44 ) {
+           /* we have enough stuff - flush the deferred stuff */
+           /* (we have asserted that the buffer is large enough) */
+           if( !dfx->defer_filled ) { /* the first time */
+-              memcpy(buf, buf+20, 20 );
+-              n = 20;
++              memcpy(buf, buf+22, 22 );
++              n = 22;
+           }
+           else {
+-              memcpy(buf, dfx->defer, 20 );
++              memcpy(buf, dfx->defer, 22 );
+           }
+           /* now fill up */
+           for(; n < size; n++ ) {
+@@ -206,22 +225,22 @@
+                   break;
+               buf[n] = c;
+           }
+-          /* move the last 20 bytes back to the defer buffer */
+-          /* (okay, we are wasting 20 bytes of supplied buffer) */
+-          n -= 20;
+-          memcpy( dfx->defer, buf+n, 20 );
++          /* Move the last 22 bytes back to the defer buffer. */
++          /* (okay, we are wasting 22 bytes of supplied buffer) */
++          n -= 22;
++          memcpy( dfx->defer, buf+n, 22 );
+           dfx->defer_filled = 1;
+       }
+       else if( !dfx->defer_filled ) { /* eof seen buf empty defer */
+           /* this is bad because there is an incomplete hash */
+-          n -= 20;
+-          memcpy(buf, buf+20, n );
++          n -= 22;
++          memcpy(buf, buf+22, n );
+           dfx->eof_seen = 2; /* eof with incomplete hash */
+       }
+       else { /* eof seen */
+-          memcpy(buf, dfx->defer, 20 );
+-          n -= 20;
+-          memcpy( dfx->defer, buf+n, 20 );
++          memcpy (buf, dfx->defer, 22 );
++          n -= 22;
++          memcpy( dfx->defer, buf+n, 22 );
+           dfx->eof_seen = 1; /* normal eof */
+       }
+
+