Preparing a release libgcrypt-1.3.2
authorWerner Koch <wk@gnupg.org>
Mon, 3 Dec 2007 09:56:52 +0000 (09:56 +0000)
committerWerner Koch <wk@gnupg.org>
Mon, 3 Dec 2007 09:56:52 +0000 (09:56 +0000)
15 files changed:
ChangeLog
NEWS
cipher/ChangeLog
cipher/rand-internal.h
cipher/random.c
cipher/rndhw.c [new file with mode: 0644]
cipher/rndunix.c
config.guess
config.sub
configure.ac
src/ChangeLog
src/dumpsexp.c
src/gcrypt.h.in
src/misc.c
src/secmem.c

index 6639568..9cc150f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2007-12-03  Werner Koch  <wk@g10code.com>
+
+       Released 1.3.2.
+
+       * configure.ac: Set LT to C15/A4/R2.
+
+       * config.sub, config.guess: Update to version 2007-11-19.
+
 2007-10-30  Werner Koch  <wk@g10code.com>
 
        * configure.ac: Protect config.h against double inclusion.
diff --git a/NEWS b/NEWS
index 25d3fc9..c0a577f 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,10 +1,12 @@
-Noteworthy changes in version 1.3.2
+Noteworthy changes in version 1.3.2 (2007-12-03)
 ------------------------------------------------
 
- * Make use of the visibility attribute if supported.
+ * The visibility attribute is now used if supported by the toolchain.
 
  * The ACE engine of VIA processors is now used for AES-128.
 
+ * The ASN.1 DER template for SHA-224 has been fixed.
+
 
 Noteworthy changes in version 1.3.1 (2007-10-26)
 ------------------------------------------------
index 39ec1ce..90fc43a 100644 (file)
@@ -1,3 +1,8 @@
+2007-12-03  Werner Koch  <wk@g10code.com>
+
+       * random.c (gcry_random_add_bytes): Implement it.
+       * rand-internal.h (RANDOM_ORIGIN_EXTERNAL): New.
+
 2007-11-30  Werner Koch  <wk@g10code.com>
 
        * rndhw.c: New.
index 7195b79..9ba4022 100644 (file)
 enum random_origins 
   {
     RANDOM_ORIGIN_INIT = 0,      /* Used only for initialization. */
-    RANDOM_ORIGIN_FASTPOLL = 1,  /* Fast random poll function.  */
-    RANDOM_ORIGIN_SLOWPOLL = 2,  /* Slow poll function.  */
-    RANDOM_ORIGIN_EXTRAPOLL = 3  /* Used to mark an extra pool seed
+    RANDOM_ORIGIN_EXTERNAL = 1,  /* Added from an external source.  */
+    RANDOM_ORIGIN_FASTPOLL = 2,  /* Fast random poll function.  */
+    RANDOM_ORIGIN_SLOWPOLL = 3,  /* Slow poll function.  */
+    RANDOM_ORIGIN_EXTRAPOLL = 4  /* Used to mark an extra pool seed
                                     due to a GCRY_VERY_STRONG_RANDOM
                                     random request.  */
   };
index 3d4cf8b..c546980 100644 (file)
@@ -474,26 +474,43 @@ _gcry_random_is_faked()
 
 /* Add BUFLEN bytes from BUF to the internal random pool.  QUALITY
    should be in the range of 0..100 to indicate the goodness of the
-   entropy added, or -1 for goodness not known. 
-
-   Note, that this function currently does nothing.
-*/
+   entropy added, or -1 for goodness not known.  */
 gcry_error_t
-gcry_random_add_bytes (const void * buf, size_t buflen, int quality)
+gcry_random_add_bytes (const void *buf, size_t buflen, int quality)
 {
-  gcry_err_code_t err = GPG_ERR_NO_ERROR;
-
-  if (!buf || quality < -1 || quality > 100)
-    err = GPG_ERR_INV_ARG;
-  if (!buflen)
-    return 0; /* Shortcut this dummy case. */
-#if 0
-  /* Before we actuall enable this code, we need to lock the pool,
-     have a look at the quality and find a way to add them without
-     disturbing the real entropy (we have estimated). */
-  /*add_randomness( buf, buflen, RANDOM_ORIGIN_FASTPOLL );*/
-#endif
-  return err;
+  size_t nbytes;
+  const char *bufptr;
+
+  if (quality == -1)
+    quality = 35;
+  else if (quality > 100)
+    quality = 100;
+  else if (quality < 0)
+    quality = 0;
+      
+  if (!buf)
+    return gpg_error (GPG_ERR_INV_ARG);
+
+  if (!buflen || quality < 10)
+    return 0; /* Take a shortcut. */
+
+  /* Because we don't increment the entropy estimation with FASTPOLL,
+     we don't need to take lock that estimation while adding from an
+     external source.  This limited entropy estimation also means that
+     we can't take QUALITY into account.  */
+  initialize_basics ();
+  bufptr = buf;
+  while (buflen)
+    {
+      nbytes = buflen > POOLSIZE? POOLSIZE : buflen;
+      lock_pool ();
+      if (rndpool)
+        add_randomness (bufptr, nbytes, RANDOM_ORIGIN_EXTERNAL);
+      unlock_pool ();
+      bufptr += nbytes;
+      buflen -= nbytes;
+    }
+  return 0;
 }   
 
     
@@ -871,7 +888,7 @@ _gcry_update_random_seed_file()
 
   /* We do only a basic initialization so that we can lock the pool.
      This is required to cope with the case that this function is
-     called by some cleanup code at a pouint where the RNG has never
+     called by some cleanup code at a point where the RNG has never
      been initialized.  */
   initialize_basics ();
   lock_pool ();
@@ -1274,7 +1291,7 @@ do_fast_random_poll (void)
    NOP unless a random function has been used or _gcry_initialize (1)
    has been used.  We use this hack so that the internal use of this
    function in cipher_open and md_open won't start filling up the
-   radnom pool, even if no random will be required by the process. */
+   random pool, even if no random will be required by the process. */
 void
 _gcry_fast_random_poll (void)
 {
diff --git a/cipher/rndhw.c b/cipher/rndhw.c
new file mode 100644 (file)
index 0000000..bbcd945
--- /dev/null
@@ -0,0 +1,138 @@
+/* rndhw.c  - Access to the external random daemon
+ * Copyright (C) 2007  Free Software Foundation, Inc.
+ *
+ * This file is part of Libgcrypt.
+ *
+ * Libgcrypt is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * Libgcrypt is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <config.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+
+#include "types.h"
+#include "g10lib.h"
+#include "rand-internal.h"
+
+#undef USE_PADLOCK
+#if defined (__i386__) && SIZEOF_UNSIGNED_LONG == 4 && defined (__GNUC__)
+#define USE_PADLOCK
+#endif
+
+/* Keep track on whether the RNG has problems.  */
+static volatile int rng_failed;
+
+
+#ifdef USE_PADLOCK
+static size_t
+poll_padlock (void (*add)(const void*, size_t, enum random_origins),
+              enum random_origins origin, int fast)
+{
+  char buffer[64+8] __attribute__ ((aligned (8)));
+  char *p;
+  unsigned int nbytes, status;
+  
+  /* Peter Gutmann's cryptlib tests again whether the RNG is enabled
+     but we don't do so.  We would have to do this also for our AES
+     implementaion and that is definitely too time consuming.  There
+     would be a race condition anyway.  Thus we assume that the OS
+     does not change the Padlock initialization while a user process
+     is running.  */
+  p = buffer;
+  nbytes = 0;
+  while (nbytes < 64)
+    {
+      asm volatile 
+        ("movl %1, %%edi\n\t"         /* Set buffer.  */
+         "xorl %%edx, %%edx\n\t"      /* Request up to 8 bytes.  */
+         ".byte 0x0f, 0xa7, 0xc0\n\t" /* XSTORE RNG. */
+         "movl %%eax, %0\n"           /* Return the status.  */
+         : "=g" (status)
+         : "g" (p)
+         : "%edx", "%edi", "cc"
+         );
+      if ((status & (1<<6))         /* RNG still enabled.  */
+          && !(status & (1<<13))    /* von Neumann corrector is enabled.  */
+          && !(status & (1<<14))    /* String filter is disabled.  */
+          && !(status & 0x1c00)     /* BIAS voltage at default.  */
+          && (!(status & 0x1f) || (status & 0x1f) == 8) /* Sanity check.  */
+          )
+        {
+          nbytes += (status & 0x1f);
+          if (fast)
+            break; /* Don't get into the loop with the fast flag set.  */
+          p += (status & 0x1f);
+        }
+      else 
+        {
+          /* If there was an error we need to break the loop and
+             record that there is something wrong with the padlock
+             RNG.  */
+          rng_failed = 1;
+          break; 
+        }
+    }
+
+  if (nbytes)
+    {
+      (*add) (buffer, nbytes, origin);
+      wipememory (buffer, nbytes);
+    }
+  return nbytes;
+}
+#endif /*USE_PADLOCK*/
+
+
+int
+_gcry_rndhw_failed_p (void)
+{
+  return rng_failed;
+}
+
+
+/* Try to read random from a hardware RNG if a fast one is
+   available.  */
+void
+_gcry_rndhw_poll_fast (void (*add)(const void*, size_t, enum random_origins),
+                       enum random_origins origin)
+{
+  (void)add;
+  (void)origin;
+
+#ifdef USE_PADLOCK
+  if ((_gcry_get_hw_features () & HWF_PADLOCK_RNG))
+    poll_padlock (add, origin, 1);
+#endif  
+}
+
+
+/* Read 64 bytes from a hardware RNG and return the number of bytes
+   actually read.  */
+size_t
+_gcry_rndhw_poll_slow (void (*add)(const void*, size_t, enum random_origins),
+                       enum random_origins origin)
+{
+  size_t nbytes = 0;
+
+  (void)add;
+  (void)origin;
+
+#ifdef USE_PADLOCK
+  if ((_gcry_get_hw_features () & HWF_PADLOCK_RNG))
+    nbytes += poll_padlock (add, origin, 0);
+#endif  
+
+  return nbytes;
+}
index 4f0f79e..0524ca8 100644 (file)
@@ -486,11 +486,12 @@ my_pclose(struct RI *entry)
     if (fclose(entry->pipe))
        return (-1);
 
-    /* We ignore the return value from the process because some programs
-     * return funny values which would result in the input being discarded
-     * even if they executed successfully.  This isn't a problem because the
-     * result data size threshold will filter out any programs which exit
-     * with a usage message without producing useful output */
+    /* We ignore the return value from the process because some
+       programs return funny values which would result in the input
+       being discarded even if they executed successfully.  This isn't
+       a problem because the result data size threshold will filter
+       out any programs which exit with a usage message without
+       producing useful output.  */
     if (waitpid(entry->pid, NULL, 0) != entry->pid)
        status = -1;
 
index c38553d..7fef1a3 100755 (executable)
@@ -1,9 +1,10 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
 #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
+#   Inc.
 
-timestamp='2006-02-23'
+timestamp='2007-11-19'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -160,6 +161,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
            arm*) machine=arm-unknown ;;
            sh3el) machine=shl-unknown ;;
            sh3eb) machine=sh-unknown ;;
+           sh5el) machine=sh5le-unknown ;;
            *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
        esac
        # The Operating System including object format, if it has switched
@@ -210,7 +212,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
        echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
        exit ;;
     macppc:MirBSD:*:*)
-       echo powerppc-unknown-mirbsd${UNAME_RELEASE}
+       echo powerpc-unknown-mirbsd${UNAME_RELEASE}
        exit ;;
     *:MirBSD:*:*)
        echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
@@ -328,7 +330,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
     sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
        echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
        exit ;;
-    i86pc:SunOS:5.*:*)
+    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
        echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
        exit ;;
     sun4*:SunOS:6*:*)
@@ -770,6 +772,8 @@ EOF
        case ${UNAME_MACHINE} in
            pc98)
                echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+           amd64)
+               echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
            *)
                echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
        esac
@@ -777,10 +781,7 @@ EOF
     i*:CYGWIN*:*)
        echo ${UNAME_MACHINE}-pc-cygwin
        exit ;;
-    i*:MINGW*:*)
-       echo ${UNAME_MACHINE}-pc-mingw32
-       exit ;;
-    i*:MSYS_NT-*:*:*)
+    *:MINGW*:*)
        echo ${UNAME_MACHINE}-pc-mingw32
        exit ;;
     i*:windows32*:*)
@@ -790,12 +791,15 @@ EOF
     i*:PW*:*)
        echo ${UNAME_MACHINE}-pc-pw32
        exit ;;
-    x86:Interix*:[345]*)
-       echo i586-pc-interix${UNAME_RELEASE}
-       exit ;;
-    EM64T:Interix*:[345]*)
-       echo x86_64-unknown-interix${UNAME_RELEASE}
-       exit ;;
+    *:Interix*:[3456]*)
+       case ${UNAME_MACHINE} in
+           x86)
+               echo i586-pc-interix${UNAME_RELEASE}
+               exit ;;
+           EM64T | authenticamd)
+               echo x86_64-unknown-interix${UNAME_RELEASE}
+               exit ;;
+       esac ;;
     [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
        echo i${UNAME_MACHINE}-pc-mks
        exit ;;
@@ -831,6 +835,9 @@ EOF
     arm*:Linux:*:*)
        echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
+    avr32*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
     cris:Linux:*:*)
        echo cris-axis-linux-gnu
        exit ;;
@@ -947,6 +954,9 @@ EOF
     x86_64:Linux:*:*)
        echo x86_64-unknown-linux-gnu
        exit ;;
+    xtensa*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
     i*86:Linux:*:*)
        # The BFD linker knows what the default object file format is, so
        # first see if it will tell us. cd to the root directory to prevent
@@ -989,7 +999,7 @@ EOF
        LIBC=gnulibc1
        # endif
        #else
-       #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__sun)
+       #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
        LIBC=gnu
        #else
        LIBC=gnuaout
@@ -1205,6 +1215,15 @@ EOF
     SX-6:SUPER-UX:*:*)
        echo sx6-nec-superux${UNAME_RELEASE}
        exit ;;
+    SX-7:SUPER-UX:*:*)
+       echo sx7-nec-superux${UNAME_RELEASE}
+       exit ;;
+    SX-8:SUPER-UX:*:*)
+       echo sx8-nec-superux${UNAME_RELEASE}
+       exit ;;
+    SX-8R:SUPER-UX:*:*)
+       echo sx8r-nec-superux${UNAME_RELEASE}
+       exit ;;
     Power*:Rhapsody:*:*)
        echo powerpc-apple-rhapsody${UNAME_RELEASE}
        exit ;;
index ad9f395..5190461 100755 (executable)
@@ -1,9 +1,10 @@
 #! /bin/sh
 # Configuration validation subroutine script.
 #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
+#   Inc.
 
-timestamp='2006-02-23'
+timestamp='2007-11-19'
 
 # This file is (in principle) common to ALL GNU software.
 # The presence of a machine in this file suggests that SOME GNU software
@@ -240,15 +241,16 @@ case $basic_machine in
        | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
        | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
        | am33_2.0 \
-       | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
+       | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
        | bfin \
        | c4x | clipper \
        | d10v | d30v | dlx | dsp16xx \
-       | fr30 | frv \
+       | fido | fr30 | frv \
        | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
        | i370 | i860 | i960 | ia64 \
        | ip2k | iq2000 \
-       | m32r | m32rle | m68000 | m68k | m88k | maxq | mb | microblaze | mcore \
+       | m32c | m32r | m32rle | m68000 | m68k | m88k \
+       | maxq | mb | microblaze | mcore | mep \
        | mips | mipsbe | mipseb | mipsel | mipsle \
        | mips16 \
        | mips64 | mips64el \
@@ -274,21 +276,19 @@ case $basic_machine in
        | pdp10 | pdp11 | pj | pjl \
        | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
        | pyramid \
-       | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
+       | score \
+       | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
        | sh64 | sh64le \
-       | sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \
-       | sparcv8 | sparcv9 | sparcv9b \
-       | strongarm \
+       | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
+       | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
+       | spu | strongarm \
        | tahoe | thumb | tic4x | tic80 | tron \
        | v850 | v850e \
        | we32k \
-       | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \
+       | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
        | z8k)
                basic_machine=$basic_machine-unknown
                ;;
-       m32c)
-               basic_machine=$basic_machine-unknown
-               ;;
        m6811 | m68hc11 | m6812 | m68hc12)
                # Motorola 68HC11/12.
                basic_machine=$basic_machine-unknown
@@ -318,18 +318,18 @@ case $basic_machine in
        | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
        | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
        | arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
-       | avr-* \
+       | avr-* | avr32-* \
        | bfin-* | bs2000-* \
        | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
        | clipper-* | craynv-* | cydra-* \
        | d10v-* | d30v-* | dlx-* \
        | elxsi-* \
-       | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
+       | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
        | h8300-* | h8500-* \
        | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
        | i*86-* | i860-* | i960-* | ia64-* \
        | ip2k-* | iq2000-* \
-       | m32r-* | m32rle-* \
+       | m32c-* | m32r-* | m32rle-* \
        | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
        | m88110-* | m88k-* | maxq-* | mcore-* \
        | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
@@ -358,22 +358,24 @@ case $basic_machine in
        | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
        | pyramid-* \
        | romp-* | rs6000-* \
-       | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | shbe-* \
+       | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
        | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
-       | sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \
+       | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
        | sparclite-* \
-       | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
+       | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
        | tahoe-* | thumb-* \
        | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
        | tron-* \
        | v850-* | v850e-* | vax-* \
        | we32k-* \
-       | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \
-       | xstormy16-* | xtensa-* \
+       | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
+       | xstormy16-* | xtensa*-* \
        | ymp-* \
        | z8k-*)
                ;;
-       m32c-*)
+       # Recognize the basic CPU types without company name, with glob match.
+       xtensa*)
+               basic_machine=$basic_machine-unknown
                ;;
        # Recognize the various machine names and aliases which stand
        # for a CPU type and a company and sometimes even an OS.
@@ -477,8 +479,8 @@ case $basic_machine in
                basic_machine=craynv-cray
                os=-unicosmp
                ;;
-       cr16c)
-               basic_machine=cr16c-unknown
+       cr16)
+               basic_machine=cr16-unknown
                os=-elf
                ;;
        crds | unos)
@@ -685,6 +687,10 @@ case $basic_machine in
                basic_machine=i386-pc
                os=-mingw32
                ;;
+       mingw32ce)
+               basic_machine=arm-unknown
+               os=-mingw32ce
+               ;;
        miniframe)
                basic_machine=m68000-convergent
                ;;
@@ -912,6 +918,10 @@ case $basic_machine in
        sb1el)
                basic_machine=mipsisa64sb1el-unknown
                ;;
+       sde)
+               basic_machine=mipsisa32-sde
+               os=-elf
+               ;;
        sei)
                basic_machine=mips-sei
                os=-seiux
@@ -923,6 +933,9 @@ case $basic_machine in
                basic_machine=sh-hitachi
                os=-hms
                ;;
+       sh5el)
+               basic_machine=sh5le-unknown
+               ;;
        sh64)
                basic_machine=sh64-unknown
                ;;
@@ -1128,7 +1141,7 @@ case $basic_machine in
        sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
                basic_machine=sh-unknown
                ;;
-       sparc | sparcv8 | sparcv9 | sparcv9b)
+       sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
                basic_machine=sparc-sun
                ;;
        cydra)
@@ -1217,7 +1230,7 @@ case $os in
              | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
              | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
              | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-             | -skyos* | -haiku* | -rdos*)
+             | -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
        # Remember, each alternative MUST END IN *, to match a version number.
                ;;
        -qnx*)
@@ -1369,6 +1382,12 @@ else
 # system, and we'll never get to this point.
 
 case $basic_machine in
+        score-*)
+               os=-elf
+               ;;
+        spu-*)
+               os=-elf
+               ;;
        *-acorn)
                os=-riscix1.2
                ;;
@@ -1378,9 +1397,9 @@ case $basic_machine in
        arm*-semi)
                os=-aout
                ;;
-    c4x-* | tic4x-*)
-        os=-coff
-        ;;
+        c4x-* | tic4x-*)
+               os=-coff
+               ;;
        # This must come before the *-dec entry.
        pdp10-*)
                os=-tops20
@@ -1406,6 +1425,9 @@ case $basic_machine in
        m68*-cisco)
                os=-aout
                ;;
+        mep-*)
+               os=-elf
+               ;;
        mips*-cisco)
                os=-elf
                ;;
index d508382..3ba7492 100644 (file)
@@ -28,7 +28,7 @@ min_automake_version="1.10"
 # Set my_issvn to "yes" for non-released code.  Remember to run an
 # "svn up" and "autogen.sh" right before creating a distribution.
 m4_define([my_version], [1.3.2])
-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;q;}')]))
@@ -40,7 +40,7 @@ AC_INIT([libgcrypt], my_version[]m4_if(my_issvn,[yes],[-svn[]svn_revision]),
 #   (No interfaces changed:                   REVISION++)
 LIBGCRYPT_LT_CURRENT=15
 LIBGCRYPT_LT_AGE=4
-LIBGCRYPT_LT_REVISION=1
+LIBGCRYPT_LT_REVISION=2
 
 
 # If the API is changed in an incompatible way: increment the next counter.
index 7f9f4f3..0fd0dd2 100644 (file)
@@ -1,3 +1,12 @@
+2007-12-03  Werner Koch  <wk@g10code.com>
+
+       * misc.c (_gcry_logv): Use abort for error levels fatal and bug as
+       this is more approriate for a library.  Terminate the secmem
+       before doing so.
+       (_gcry_fatal_error): Terminate secmem before abort.
+       * secmem.c (_gcry_secmem_malloc_internal): Use log_bug instead of
+       exit.
+
 2007-11-29  Werner Koch  <wk@g10code.com>
 
        * hwfeatures.c (detect_ia32_gnuc): Detect Padlock engine.
index b91dbb7..157c410 100644 (file)
@@ -12,9 +12,7 @@
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA.
+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <config.h>
index 1989e3e..eeb5e4b 100644 (file)
@@ -1609,7 +1609,7 @@ void gcry_randomize (void *buffer, size_t length,
    pool. QUALITY should either be -1 for unknown or in the range of 0
    to 100 */
 gcry_error_t gcry_random_add_bytes (const void *buffer, size_t length,
-                                   int quality);
+                                    int quality);
 
 /* If random numbers are used in an application, this macro should be
    called from time to time so that new stuff gets added to the
index 30fedd6..15dc364 100644 (file)
@@ -1,10 +1,10 @@
 /* misc.c
- *     Copyright (C) 1999, 2001, 2002, 2003 Free Software Foundation, Inc.
+ * Copyright (C) 1999, 2001, 2002, 2003, 2007 Free Software Foundation, Inc.
  *
  * This file is part of Libgcrypt.
  *
  * Libgcrypt is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser general Public License as
+ * it under the terms of the GNU Lesser General Public License as
  * published by the Free Software Foundation; either version 2.1 of
  * the License, or (at your option) any later version.
  *
@@ -14,8 +14,7 @@
  * GNU Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ * License along with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <config.h>
@@ -26,6 +25,7 @@
 #include <unistd.h>
 
 #include "g10lib.h"
+#include "secmem.h"
 
 static int verbosity_level = 0;
 
@@ -81,6 +81,7 @@ _gcry_fatal_error (int rc, const char *text)
   write2stderr("\nFatal error: ");
   write2stderr(text);
   write2stderr("\n");
+  _gcry_secmem_term ();
   abort ();
 }
 
@@ -111,28 +112,32 @@ _gcry_log_verbosity( int level )
 static void
 _gcry_logv( int level, const char *fmt, va_list arg_ptr )
 {
-    if( log_handler )
-       log_handler( log_handler_value, level, fmt, arg_ptr );
-    else {
-       switch ( level ) {
-         case GCRY_LOG_CONT: break;
-         case GCRY_LOG_INFO: break;
-         case GCRY_LOG_WARN: break;
-         case GCRY_LOG_ERROR: break;
-         case GCRY_LOG_FATAL: fputs("Fatal: ",stderr ); break;
-         case GCRY_LOG_BUG: fputs("Ohhhh jeeee: ", stderr); break;
-         case GCRY_LOG_DEBUG: fputs("DBG: ", stderr ); break;
-         default: fprintf(stderr,"[Unknown log level %d]: ", level ); break;
+  if (log_handler)
+    log_handler (log_handler_value, level, fmt, arg_ptr);
+  else 
+    {
+      switch (level) 
+        {
+        case GCRY_LOG_CONT:  break;
+        case GCRY_LOG_INFO:  break;
+        case GCRY_LOG_WARN:  break;
+        case GCRY_LOG_ERROR: break;
+        case GCRY_LOG_FATAL: fputs("Fatal: ",stderr ); break;
+        case GCRY_LOG_BUG:   fputs("Ohhhh jeeee: ", stderr); break;
+        case GCRY_LOG_DEBUG: fputs("DBG: ", stderr ); break;
+        default: fprintf(stderr,"[Unknown log level %d]: ", level ); break;
        }
-       vfprintf(stderr,fmt,arg_ptr) ;
+      vfprintf(stderr,fmt,arg_ptr) ;
+    }
+  
+  if ( level == GCRY_LOG_FATAL || level == GCRY_LOG_BUG )
+    {
+      _gcry_secmem_term ();
+      abort ();
     }
-
-    if( level == GCRY_LOG_FATAL )
-       exit(2);
-    else if( level == GCRY_LOG_BUG )
-       abort();
 }
 
+
 void
 _gcry_log( int level, const char *fmt, ... )
 {
index 2d603a2..1bcfa04 100644 (file)
@@ -494,9 +494,8 @@ _gcry_secmem_malloc_internal (size_t size)
 
   if (!pool_okay)
     {
-      log_info (_
+      log_bug (_
        ("operation is not possible without initialized secure memory\n"));
-      exit (2);
     }
   if (show_warning && !suspend_warning)
     {