Replace assert calls by a new gcry_assert at most places.
authorWerner Koch <wk@gnupg.org>
Wed, 20 Aug 2008 17:59:42 +0000 (17:59 +0000)
committerWerner Koch <wk@gnupg.org>
Wed, 20 Aug 2008 17:59:42 +0000 (17:59 +0000)
25 files changed:
cipher/ac.c
cipher/dsa.c
cipher/ecc.c
cipher/md.c
cipher/primegen.c
cipher/pubkey.c
cipher/rijndael.c
cipher/whirlpool.c
mpi/ec.c
mpi/mpi-bit.c
mpi/mpi-mod.c
mpi/mpi-mpow.c
mpi/mpi-pow.c
mpi/mpicoder.c
mpi/mpiutil.c
random/random-csprng.c
random/random.c
random/rndhw.c
random/rndw32.c
src/ChangeLog
src/ath.c
src/fips.c
src/g10lib.h
src/global.c
src/misc.c

index 04a3b28..ee9498b 100644 (file)
@@ -24,7 +24,6 @@
 #include <string.h>
 #include <stdio.h>
 #include <stddef.h>
-#include <assert.h>
 
 #include "g10lib.h"
 #include "cipher.h"
@@ -886,8 +885,8 @@ _gcry_ac_io_init_va (gcry_ac_io_t *ac_io,
   if (fips_mode ())
     return;
 
-  assert ((mode == GCRY_AC_IO_READABLE) || (mode == GCRY_AC_IO_WRITABLE));
-  assert ((type == GCRY_AC_IO_STRING) || (type == GCRY_AC_IO_STRING));
+  gcry_assert ((mode == GCRY_AC_IO_READABLE) || (mode == GCRY_AC_IO_WRITABLE));
+  gcry_assert ((type == GCRY_AC_IO_STRING) || (type == GCRY_AC_IO_STRING));
 
   ac_io->mode = mode;
   ac_io->type = type;
@@ -947,7 +946,7 @@ _gcry_ac_io_write (gcry_ac_io_t *ac_io, unsigned char *buffer, size_t buffer_n)
 {
   gcry_error_t err;
 
-  assert (ac_io->mode == GCRY_AC_IO_WRITABLE);
+  gcry_assert (ac_io->mode == GCRY_AC_IO_WRITABLE);
   err = 0;
 
   switch (ac_io->type)
@@ -1007,7 +1006,7 @@ _gcry_ac_io_read (gcry_ac_io_t *ac_io,
 {
   gcry_error_t err;
   
-  assert (ac_io->mode == GCRY_AC_IO_READABLE);
+  gcry_assert (ac_io->mode == GCRY_AC_IO_READABLE);
   err = 0;
 
   switch (ac_io->type)
index ccfd686..daafdde 100644 (file)
@@ -23,7 +23,6 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <assert.h>
 
 #include "g10lib.h"
 #include "mpi.h"
@@ -237,7 +236,7 @@ generate (DSA_secret_key *sk, unsigned int nbits, unsigned int qbits,
    * is the secret part. */
   if( DBG_CIPHER )
     log_debug("choosing a random x ");
-  assert( qbits >= 160 );
+  gcry_assert( qbits >= 160 );
   x = mpi_alloc_secure( mpi_get_nlimbs(q) );
   mpi_sub_ui( h, q, 1 );  /* put q-1 into h */
   rndbuf = NULL;
index d1da75a..c75fd4e 100644 (file)
@@ -54,7 +54,6 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <assert.h>
 
 #include "g10lib.h"
 #include "mpi.h"
index 2cc25b7..7ca4a21 100644 (file)
@@ -23,7 +23,6 @@
 #include <stdlib.h>
 #include <string.h>
 #include <errno.h>
-#include <assert.h>
 
 #include "g10lib.h"
 #include "cipher.h"
@@ -627,10 +626,10 @@ md_copy (gcry_md_hd_t ahd, gcry_md_hd_t *b_hd)
     {
       bhd->ctx = b = (struct gcry_md_context *) ((char *) bhd + n);
       /* No need to copy the buffer due to the write above. */
-      assert (ahd->bufsize == (n - sizeof (struct gcry_md_handle) + 1));
+      gcry_assert (ahd->bufsize == (n - sizeof (struct gcry_md_handle) + 1));
       bhd->bufsize = ahd->bufsize;
       bhd->bufpos = 0;
-      assert (! ahd->bufpos);
+      gcry_assert (! ahd->bufpos);
       memcpy (b, a, sizeof *a);
       b->list = NULL;
       b->debug = NULL;
@@ -843,7 +842,7 @@ prepare_macpads( gcry_md_hd_t hd, const byte *key, size_t keylen)
       gcry_md_hash_buffer ( algo, helpkey, key, keylen );
       key = helpkey;
       keylen = md_digest_length( algo );
-      assert ( keylen <= 64 );
+      gcry_assert ( keylen <= 64 );
     }
 
   memset ( hd->ctx->macpads, 0, 2*(hd->ctx->macpads_Bsize) );
index 11da16a..ef2d11d 100644 (file)
@@ -24,7 +24,6 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <assert.h>
 #include <errno.h>
 
 #include "g10lib.h"
@@ -208,7 +207,7 @@ get_pool_prime (unsigned int nbits, gcry_random_level_t randomlevel)
       {
         gcry_mpi_t prime = item->prime;
         item->prime = NULL;
-        assert (nbits == mpi_get_nbits (prime));
+        gcry_assert (nbits == mpi_get_nbits (prime));
         return prime;
       }
   return NULL;
@@ -950,7 +949,7 @@ is_prime (gcry_mpi_t n, int steps, unsigned int *count)
               mpi_set_highbit( x, nbits-2 );
               mpi_clear_bit( x, nbits-2 );
             }
-          assert ( mpi_cmp( x, nminus1 ) < 0 && mpi_cmp_ui( x, 1 ) > 0 );
+          gcry_assert (mpi_cmp (x, nminus1) < 0 && mpi_cmp_ui (x, 1) > 0);
        }
       gcry_mpi_powm ( y, x, q, n);
       if ( mpi_cmp_ui(y, 1) && mpi_cmp( y, nminus1 ) )
index ad5f89b..cf8a17c 100644 (file)
@@ -23,7 +23,6 @@
 #include <stdlib.h>
 #include <string.h>
 #include <errno.h>
-#include <assert.h>
 
 #include "g10lib.h"
 #include "mpi.h"
@@ -860,7 +859,7 @@ sexp_elements_extract_ecc (gcry_sexp_t key_sexp, const char *element_names,
   /* Clear the array for easir error cleanup. */
   for (name = element_names, idx = 0; *name; name++, idx++)
     elements[idx] = NULL;
-  assert (idx >= 6); /* We know that ECC has at least 6 elements.  */
+  gcry_assert (idx >= 6); /* We know that ECC has at least 6 elements.  */
 
   /* Init the array with the available curve parameters. */
   for (name = element_names, idx = 0; *name && !err; name++, idx++)
@@ -1391,7 +1390,7 @@ sexp_data_to_mpi (gcry_sexp_t input, unsigned int nbits, gcry_mpi_t *ret_mpi,
           frame[n++] = 0;
           frame[n++] = 2; /* block type */
           i = nframe - 3 - valuelen;
-          assert (i > 0);
+          gcry_assert (i > 0);
           p = gcry_random_bytes_secure (i, GCRY_STRONG_RANDOM);
           /* Replace zero bytes by new values. */
           for (;;)
@@ -1426,7 +1425,7 @@ sexp_data_to_mpi (gcry_sexp_t input, unsigned int nbits, gcry_mpi_t *ret_mpi,
           frame[n++] = 0;
           memcpy (frame+n, value, valuelen);
           n += valuelen;
-          assert (n == nframe);
+          gcry_assert (n == nframe);
 
          /* FIXME, error checking?  */
           gcry_mpi_scan (ret_mpi, GCRYMPI_FMT_USG, frame, n, &nframe);
@@ -1527,7 +1526,7 @@ sexp_data_to_mpi (gcry_sexp_t input, unsigned int nbits, gcry_mpi_t *ret_mpi,
               frame[n++] = 0;
               frame[n++] = 1; /* block type */
               i = nframe - valuelen - asnlen - 3 ;
-              assert (i > 1);
+              gcry_assert (i > 1);
               memset (frame+n, 0xff, i );
               n += i;
               frame[n++] = 0;
@@ -1535,7 +1534,7 @@ sexp_data_to_mpi (gcry_sexp_t input, unsigned int nbits, gcry_mpi_t *ret_mpi,
               n += asnlen;
               memcpy (frame+n, value, valuelen );
               n += valuelen;
-              assert (n == nframe);
+              gcry_assert (n == nframe);
       
               /* Convert it into an MPI.  FIXME: error checking?  */
               gcry_mpi_scan (ret_mpi, GCRYMPI_FMT_USG, frame, n, &nframe);
@@ -1599,7 +1598,7 @@ gcry_pk_encrypt (gcry_sexp_t *r_ciph, gcry_sexp_t s_data, gcry_sexp_t s_pkey)
   if (rc)
     goto leave;
 
-  assert (module);
+  gcry_assert (module);
   pubkey = (gcry_pk_spec_t *) module->spec;
 
   /* If aliases for the algorithm name exists, take the first one
@@ -1838,7 +1837,7 @@ gcry_pk_sign (gcry_sexp_t *r_sig, gcry_sexp_t s_hash, gcry_sexp_t s_skey)
   if (rc)
     goto leave;
 
-  assert (module);
+  gcry_assert (module);
   pubkey = (gcry_pk_spec_t *) module->spec;
   algo_name = pubkey->aliases? *pubkey->aliases : NULL;
   if (!algo_name || !*algo_name)
@@ -2291,7 +2290,7 @@ gcry_pk_genkey (gcry_sexp_t *r_key, gcry_sexp_t s_parms)
         p = stpcpy (p, "))");
       }
     strcpy (p, ")");
-    assert (p - string < needed);
+    gcry_assert (p - string < needed);
 
     while (nelem < DIM (mpis))
       mpis[nelem++] = NULL;
@@ -2315,9 +2314,9 @@ gcry_pk_genkey (gcry_sexp_t *r_key, gcry_sexp_t s_parms)
       free (arg_list);
       if (rc)
        BUG ();
-      assert (DIM (mpis) == 30); /* Reminder to make sure that the
-                                    array gets increased if new
-                                    parameters are added. */
+      gcry_assert (DIM (mpis) == 30); /* Reminder to make sure that
+                                         the array gets increased if
+                                         new parameters are added. */
     }
     gcry_free (string);
   }
index b54e069..18158cb 100644 (file)
@@ -41,7 +41,6 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h> /* for memcmp() */
-#include <assert.h>
 
 #include "types.h"  /* for byte and u32 typedefs */
 #include "g10lib.h"
@@ -995,8 +994,8 @@ selftest_fips_128_38a (int requested_mode)
     return a;                    \
   } while (0)
 
-  assert (sizeof tv[0].data[0].input == sizeof scratch);
-  assert (sizeof tv[0].data[0].output == sizeof scratch);
+  gcry_assert (sizeof tv[0].data[0].input == sizeof scratch);
+  gcry_assert (sizeof tv[0].data[0].output == sizeof scratch);
 
   for (tvi=0; tvi < DIM (tv); tvi++)
     if (tv[tvi].mode == requested_mode)
index 91bac24..9b029ee 100644 (file)
@@ -33,7 +33,6 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <assert.h>
 
 #include "types.h"
 #include "g10lib.h"
@@ -1350,7 +1349,7 @@ whirlpool_add (whirlpool_context_t *context,
       buffer_size >>= 8;
       carry >>= 8;
     }
-  assert (! (buffer_size || carry));
+  gcry_assert (! (buffer_size || carry));
 }
 
 static void
index b76dd52..4a3a5f8 100644 (file)
--- a/mpi/ec.c
+++ b/mpi/ec.c
@@ -22,7 +22,6 @@
 #include <config.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include <assert.h>
 
 #include "mpi-internal.h"
 #include "longlong.h"
index 326e952..32c820c 100644 (file)
@@ -21,7 +21,6 @@
 #include <config.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include <assert.h>
 #include "mpi-internal.h"
 #include "longlong.h"
 
index 9f38a0a..948bf23 100644 (file)
@@ -23,7 +23,6 @@
 #include <config.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include <assert.h>
 
 #include "mpi-internal.h"
 #include "longlong.h"
index f37c6f9..131c5b6 100644 (file)
 #include <config.h>
 #include <stdio.h>
 #include <stdlib.h>
+
 #include "mpi-internal.h"
 #include "longlong.h"
 #include "g10lib.h"
-#include <assert.h>
 
 
 /* Barrett is slower than the classical way.  It can be tweaked by
@@ -77,7 +77,7 @@ _gcry_mpi_mulpowm( gcry_mpi_t res, gcry_mpi_t *basearray, gcry_mpi_t *exparray,
 
     for(k=0; basearray[k]; k++ )
        ;
-    assert(k);
+    gcry_assert(k);
     for(t=0, i=0; (tmp=exparray[i]); i++ ) {
        /*log_mpidump("exp: ", tmp );*/
        j = mpi_get_nbits(tmp);
@@ -85,9 +85,9 @@ _gcry_mpi_mulpowm( gcry_mpi_t res, gcry_mpi_t *basearray, gcry_mpi_t *exparray,
            t = j;
     }
     /*log_mpidump("mod: ", m );*/
-    assert(i==k);
-    assert(t);
-    assert( k < 10 );
+    gcry_assert (i==k);
+    gcry_assert (t);
+    gcry_assert (k < 10);
 
     G = gcry_xcalloc( (1<<k) , sizeof *G );
 #ifdef USE_BARRETT
@@ -100,7 +100,7 @@ _gcry_mpi_mulpowm( gcry_mpi_t res, gcry_mpi_t *basearray, gcry_mpi_t *exparray,
        barrett_mulm(tmp, res, res, m, barrett_y, barrett_k,
                                       barrett_r1, barrett_r2 );
        idx = build_index( exparray, k, i, t );
-       assert( idx >= 0 && idx < (1<<k) );
+       gcry_assert (idx >= 0 && idx < (1<<k));
        if( !G[idx] ) {
            if( !idx )
                 G[0] = mpi_alloc_set_ui( 1 );
index 4f3d73e..975e4aa 100644 (file)
@@ -28,9 +28,9 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+
 #include "mpi-internal.h"
 #include "longlong.h"
-#include <assert.h>
 
 
 /****************
@@ -133,7 +133,7 @@ gcry_mpi_powm( gcry_mpi_t res, gcry_mpi_t base, gcry_mpi_t expo, gcry_mpi_t mod)
     else { /* Make BASE, EXPO and MOD not overlap with RES.  */
        if( rp == bp ) {
            /* RES and BASE are identical.  Allocate temp. space for BASE.  */
-           assert( !bp_marker );
+           gcry_assert (!bp_marker);
             bp_nlimbs = bsec? bsize:0;
            bp = bp_marker = mpi_alloc_limb_space( bsize, bsec );
            MPN_COPY(bp, rp, bsize);
@@ -146,7 +146,7 @@ gcry_mpi_powm( gcry_mpi_t res, gcry_mpi_t base, gcry_mpi_t expo, gcry_mpi_t mod)
        }
        if( rp == mp ) {
            /* RES and MOD are identical.  Allocate temporary space for MOD.*/
-           assert( !mp_marker );
+           gcry_assert (!mp_marker);
             mp_nlimbs = msec?msize:0;
            mp = mp_marker = mpi_alloc_limb_space( msize, msec );
            MPN_COPY(mp, rp, msize);
index a0ae8f8..0c19941 100644 (file)
@@ -23,7 +23,6 @@
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
-#include <assert.h>
 
 #include "mpi-internal.h"
 #include "g10lib.h"
@@ -123,9 +122,9 @@ mpi_fromstr(gcry_mpi_t val, const char *str)
            }
            else
                c1 = *str++;
-           assert(c1);
+           gcry_assert (c1);
            c2 = *str++;
-           assert(c2);
+           gcry_assert (c2);
            if( c1 >= '0' && c1 <= '9' )
                c = c1 - '0';
            else if( c1 >= 'a' && c1 <= 'f' )
@@ -328,7 +327,7 @@ _gcry_mpi_set_buffer ( gcry_mpi_t a, const void *buffer_arg,
        a->d[i++] = alimb;
     }
     a->nlimbs = i;
-    assert( i == nlimbs );
+    gcry_assert (i == nlimbs);
 }
 
 
index bafc5de..4dc5211 100644 (file)
@@ -22,7 +22,6 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <assert.h>
 
 #include "g10lib.h"
 #include "mpi-internal.h"
@@ -196,7 +195,7 @@ mpi_set_secure( gcry_mpi_t a )
   ap = a->d;
   if (!a->nlimbs)
     {
-      assert(!ap);
+      gcry_assert (!ap);
       return;
     }
   bp = mpi_alloc_limb_space (a->nlimbs, 1);
index ef16805..eda34f7 100644 (file)
@@ -29,7 +29,6 @@
 #include <config.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include <assert.h>
 #include <errno.h>
 #include <string.h>
 #include <sys/time.h>
@@ -278,9 +277,9 @@ initialize_basics(void)
 
       /* Make sure that we are still using the values we have
          traditionally used for the random levels.  */
-      assert ( GCRY_WEAK_RANDOM == 0 
-               && GCRY_STRONG_RANDOM == 1
-               && GCRY_VERY_STRONG_RANDOM == 2);
+      gcry_assert (GCRY_WEAK_RANDOM == 0 
+                   && GCRY_STRONG_RANDOM == 1
+                   && GCRY_VERY_STRONG_RANDOM == 2);
     }
 }
 
@@ -603,7 +602,7 @@ mix_pool(unsigned char *pool)
 #error must have a digest length of 20 for ripe-md-160
 #endif
 
-  assert (pool_is_locked);
+  gcry_assert (pool_is_locked);
   _gcry_rmd160_init( &md );
 
   /* Loop over the pool.  */
@@ -728,7 +727,7 @@ read_seed_file (void)
   unsigned char buffer[POOLSIZE];
   int n;
 
-  assert (pool_is_locked);
+  gcry_assert (pool_is_locked);
 
   if (!seed_file_name)
     return 0;
@@ -919,7 +918,7 @@ read_pool (byte *buffer, size_t length, int level)
   static volatile pid_t my_pid = (pid_t)(-1); 
   volatile pid_t my_pid2;
 
-  assert (pool_is_locked);
+  gcry_assert (pool_is_locked);
 
  retry:
   /* Get our own pid, so that we can detect a fork. */
@@ -938,7 +937,7 @@ read_pool (byte *buffer, size_t length, int level)
       just_mixed = 0; /* Make sure it will get mixed. */
     }
 
-  assert (pool_is_locked);
+  gcry_assert (pool_is_locked);
 
   /* Our code does not allow to extract more than POOLSIZE.  Better
      check it here. */
@@ -1059,7 +1058,7 @@ add_randomness (const void *buffer, size_t length, enum random_origins origin)
   const unsigned char *p = buffer;
   size_t count = 0;
 
-  assert (pool_is_locked);
+  gcry_assert (pool_is_locked);
 
   rndstats.addbytes += length;
   rndstats.naddbytes++;
@@ -1157,7 +1156,7 @@ getfnc_fast_random_poll (void))( void (*)(const void*, size_t,
 static void
 do_fast_random_poll (void)
 {
-  assert (pool_is_locked);
+  gcry_assert (pool_is_locked);
 
   rndstats.fastpolls++;
 
index 020c651..4402f44 100644 (file)
@@ -25,7 +25,6 @@
 #include <config.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include <assert.h>
 #include <errno.h>
 
 #include "g10lib.h"
index 577bd15..2c78b47 100644 (file)
@@ -20,7 +20,6 @@
 #include <config.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include <assert.h>
 
 #include "types.h"
 #include "g10lib.h"
index 74007e3..1952979 100644 (file)
@@ -71,7 +71,6 @@
 #include <config.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include <assert.h>
 #include <errno.h>
 #include <string.h>
 #ifdef __GNUC__  
@@ -735,7 +734,7 @@ slow_gatherer ( void (*add)(const void*, size_t, enum random_origins),
           (*add) (buffer, powerInfo[i].size, requester);
           no_results++;
         }
-      assert (i < 100);
+      gcry_assert (i < 100);
     }
   gcry_free (buffer);
 
@@ -833,7 +832,7 @@ _gcry_rndw32_gather_random_fast (void (*add)(const void*, size_t,
     ADD ( GetQueueStatus (QS_ALLEVENTS));
     ADD ( GetTickCount ());
 
-    assert ( bufptr-buffer < sizeof (buffer) );
+    gcry_assert ( bufptr-buffer < sizeof (buffer) );
     (*add) ( buffer, bufptr-buffer, origin );
 #undef ADD
   }
index f7cdcca..85076b1 100644 (file)
@@ -1,3 +1,10 @@
+2008-08-20  Werner Koch  <wk@g10code.com>
+
+       * g10lib.h (gcry_assert): New.  use this at almost all places
+       where we used a plain assert.
+       * misc.c (_gcry_assert_failed): New.
+       (_gcry_bug): Also use func variant for ISO-C99.
+
 2008-08-19  Werner Koch  <wk@g10code.com>
 
        * visibility.c, visibility.h (gcry_mpi_lshift): New.
index edfaada..0c274cd 100644 (file)
--- a/src/ath.c
+++ b/src/ath.c
@@ -22,7 +22,7 @@
 #include <config.h>
 #endif
 
-#include <assert.h>
+#include <assert.h>  /* Right: We need to use assert and not gcry_assert.  */
 #include <unistd.h>
 #ifdef HAVE_SYS_SELECT_H
 # include <sys/select.h>
index 0083177..c02f064 100644 (file)
@@ -20,7 +20,6 @@
 #include <config.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include <assert.h>
 #include <errno.h>
 #include <unistd.h>
 
@@ -85,14 +84,14 @@ _gcry_initialize_fips_mode (int force)
           fips_noreturn ();
         }
       /* If not in fips mode an assert is sufficient.  */
-      assert (!done);
+      gcry_assert (!done);
     }
   done = 1;
 
   /* If the calling applicatione explicitly requested fipsmode, do so.  */
   if (force)
     {
-      assert (!no_fips_mode_required);
+      gcry_assert (!no_fips_mode_required);
       goto leave;
     }
 
@@ -106,7 +105,7 @@ _gcry_initialize_fips_mode (int force)
      allowed.  */
   if ( !access ("/etc/gcrypt/fips140.force", F_OK) )
     {
-      assert (!no_fips_mode_required);
+      gcry_assert (!no_fips_mode_required);
       goto leave;
     }
 
@@ -124,7 +123,7 @@ _gcry_initialize_fips_mode (int force)
           {
             /* System is in fips mode.  */
             fclose (fp);
-            assert (!no_fips_mode_required);
+            gcry_assert (!no_fips_mode_required);
             goto leave;
           }
         fclose (fp);
index 701656f..ed25a51 100644 (file)
 #define _(a)  _gcry_gettext(a)
 #define N_(a) (a)
 
+/* Some handy macros */
+#ifndef STR
+#define STR(v) #v
+#endif
+#define STR2(v) STR(v)
+#define DIM(v) (sizeof(v)/sizeof((v)[0]))
+#define DIMof(type,member)   DIM(((type *)0)->member)
+
 \f
 
 /*-- src/global.c -*/
@@ -73,11 +81,14 @@ int _gcry_get_debug_flag (unsigned int mask);
 
 /*-- src/misc.c --*/
 
-#ifdef JNLIB_GCC_M_FUNCTION
+#if defined(JNLIB_GCC_M_FUNCTION) || __STDC_VERSION__ >= 199901L
 void _gcry_bug (const char *file, int line,
                 const char *func) GCC_ATTR_NORETURN;
+void _gcry_assert_failed (const char *expr, const char *file, int line,
+                          const char *func) GCC_ATTR_NORETURN;
 #else
 void _gcry_bug (const char *file, int line);
+void _gcry_assert_failed (const char *expr, const char *file, int line);
 #endif
 
 const char *_gcry_gettext (const char *key);
@@ -97,10 +108,19 @@ int _gcry_log_verbosity( int level );
 
 #ifdef JNLIB_GCC_M_FUNCTION
 #define BUG() _gcry_bug( __FILE__ , __LINE__, __FUNCTION__ )
+#define gcry_assert(expr) ((expr)? (void)0 \
+         : _gcry_assert_failed (STR(expr), __FILE__, __LINE__, __FUNCTION__))
+#elif __STDC_VERSION__ >= 199901L
+#define BUG() _gcry_bug( __FILE__ , __LINE__, __func__ )
+#define gcry_assert(expr) ((expr)? (void)0 \
+         : _gcry_assert_failed (STR(expr), __FILE__, __LINE__, __func__))
 #else
 #define BUG() _gcry_bug( __FILE__ , __LINE__ )
+#define gcry_assert(expr) ((expr)? (void)0 \
+         : _gcry_assert_failed (STR(expr), __FILE__, __LINE__))
 #endif
 
+
 #define log_hexdump _gcry_log_hexdump
 #define log_bug     _gcry_log_bug
 #define log_fatal   _gcry_log_fatal
@@ -169,14 +189,6 @@ int strcasecmp (const char *a, const char *b) _GCRY_GCC_ATTR_PURE;
 #endif
 
 
-/* some handy macros */
-#ifndef STR
-#define STR(v) #v
-#endif
-#define STR2(v) STR(v)
-#define DIM(v) (sizeof(v)/sizeof((v)[0]))
-#define DIMof(type,member)   DIM(((type *)0)->member)
-
 /* Stack burning.  */
 
 void _gcry_burn_stack (int bytes);
index de562b3..ed4e480 100644 (file)
@@ -28,7 +28,6 @@
 #include <limits.h>
 #include <errno.h>
 #include <unistd.h>
-#include <assert.h>
 
 #include "g10lib.h"
 #include "cipher.h"
index 71c6003..cbb59e1 100644 (file)
@@ -1,5 +1,6 @@
 /* misc.c
- * Copyright (C) 1999, 2001, 2002, 2003, 2007 Free Software Foundation, Inc.
+ * Copyright (C) 1999, 2001, 2002, 2003, 2007, 
+ *               2008 Free Software Foundation, Inc.
  *
  * This file is part of Libgcrypt.
  *
@@ -151,7 +152,7 @@ _gcry_log( int level, const char *fmt, ... )
 }
 
 
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 5 )
+#if defined(JNLIB_GCC_M_FUNCTION) || __STDC_VERSION__ >= 199901L
 void
 _gcry_bug( const char *file, int line, const char *func )
 {
@@ -159,6 +160,14 @@ _gcry_bug( const char *file, int line, const char *func )
             ("... this is a bug (%s:%d:%s)\n"), file, line, func );
     abort(); /* never called, but it makes the compiler happy */
 }
+void
+_gcry_assert_failed (const char *expr, const char *file, int line,
+                     const char *func)
+{
+  _gcry_log (GCRY_LOG_BUG,
+             ("Assertion `%s' failed (%s:%d:%s)\n"), expr, file, line, func );
+  abort(); /* Never called, but it makes the compiler happy. */
+}
 #else
 void
 _gcry_bug( const char *file, int line )
@@ -167,6 +176,13 @@ _gcry_bug( const char *file, int line )
             _("you found a bug ... (%s:%d)\n"), file, line);
     abort(); /* never called, but it makes the compiler happy */
 }
+void
+_gcry_assert_failed (const char *expr, const char *file, int line)
+{
+  _gcry_log (GCRY_LOG_BUG,
+             ("Assertion `%s' failed (%s:%d)\n"), expr, file, line);
+  abort(); /* Never called, but it makes the compiler happy. */
+}
 #endif
 
 void