Minor bug fixes.
authorWerner Koch <wk@gnupg.org>
Thu, 2 Jul 2009 13:40:15 +0000 (13:40 +0000)
committerWerner Koch <wk@gnupg.org>
Thu, 2 Jul 2009 13:40:15 +0000 (13:40 +0000)
THANKS
cipher/ChangeLog
cipher/md.c
src/ChangeLog
src/dumpsexp.c
src/sexp.c
tests/ChangeLog
tests/benchmark.c

diff --git a/THANKS b/THANKS
index 8462608..856bac6 100644 (file)
--- a/THANKS
+++ b/THANKS
@@ -21,6 +21,7 @@ Christian Grothoff         grothoff@cs.purdue.edu
 Christian von Roques      roques@pond.sub.org
 Christopher Oliver        oliver@fritz.traverse.net
 Christian Recktenwald     chris@citecs.de
+Daiki Ueno                 ueno at unixuser org
 Dan Fandrich               dan at coneharvesters com
 Daniel Eisenbud           eisenbud@cs.swarthmore.edu
 Daniel Koening            dan@mail.isis.de
@@ -32,6 +33,7 @@ Ed Boraas                ecxjo@esperanto.org
 Elie De Brauwer            elie@de-brauwer.be
 Enzo Michelangeli         em@MailAndNews.com
 Ernst Molitor             ernst.molitor@uni-bonn.de
+Fabian Keil                fk at fabiankeil de
 Fabio Coatti              cova@felix.unife.it
 Felix von Leitner         leitner@amdiv.de
 Frank Heckenbach          heckenb@mi.uni-erlangen.de
index 27f686a..d4e7bf8 100644 (file)
@@ -1,3 +1,8 @@
+2009-07-02  Werner Koch  <wk@g10code.com>
+
+       * md.c (md_read): Fix incomplete check for NULL.
+       Reported by Fabian Kail.
+
 2009-03-31  Werner Koch  <wk@g10code.com>
 
        * rsa.c (rsa_check_secret_key): Return GPG_ERR_BAD_SECKEY and not
index 5dfbbd9..9528f6d 100644 (file)
@@ -948,10 +948,13 @@ md_read( gcry_md_hd_t a, int algo )
 
   if (! algo)
     {
-      /* return the first algorithm */
-      if (r && r->next)
-       log_debug ("more than one algorithm in md_read(0)\n");
-      return r->digest->read( &r->context.c );
+      /* Return the first algorithm */
+      if (r)
+        {
+          if (r->next)
+            log_debug ("more than one algorithm in md_read(0)\n");
+          return r->digest->read (&r->context.c);
+        }
     }
   else
     {
index 1b784e4..94cc4be 100644 (file)
@@ -1,3 +1,13 @@
+2009-07-02  Werner Koch  <wk@g10code.com>
+
+       * dumpsexp.c (main): Fix handling multiple files.
+       (parse_and_print): Implement hex and octal escaping.
+
+       * sexp.c (unquote_string): Remove superfluous clearing of ESC.
+       * dumpsexp.c (parse_and_print): Add missing break.
+       (main): Fix return value.
+       Reported by Fabian Keil.
+
 2009-02-16  Werner Koch  <wk@g10code.com>
 
        * ath.h [HAVE_SYS_SELECT_H]: Include <sys/select.h> for fd_set.
index 8f5c0d3..0e64c8b 100644 (file)
@@ -276,7 +276,7 @@ printhex (int c)
 
 
 
-
+/* Returns 0 on success.  */
 static int
 parse_and_print (FILE *fp)
 {
@@ -488,12 +488,37 @@ parse_and_print (FILE *fp)
               state = IN_STRING;
               break;
             }
+          break;
           
         case IN_OCT_ESC: 
-          state = IN_STRING;
+          if (quote_idx < 3 && strchr ("01234567", c))
+            {
+              quote_buf[quote_idx++] = c; 
+              if (quote_idx == 3)
+                {
+                  printchr ((unsigned int)quote_buf[0] * 8 * 8
+                            + (unsigned int)quote_buf[1] * 8
+                            + (unsigned int)quote_buf[2]);
+                  state = IN_STRING;
+                }
+            }
+          else
+            state = IN_STRING;
           break;
         case IN_HEX_ESC: 
-          state = IN_STRING;
+          if (quote_idx < 2 && strchr ("0123456789abcdefABCDEF", c))
+            {
+              quote_buf[quote_idx++] = c; 
+              if (quote_idx == 2)
+                {
+                  printchr (xtoi_1 (quote_buf[0]) * 16
+                            + xtoi_1 (quote_buf[1]));
+
+                  state = IN_STRING;
+                }
+            }
+          else
+            state = IN_STRING;
           break;
         case CR_ESC:
           state = IN_STRING;
@@ -590,7 +615,8 @@ main (int argc, char **argv)
     }
   else
     {
-      for (; argc; argc--)
+      rc = 0;
+      for (; argc; argv++, argc--)
         {
           FILE *fp = fopen (*argv, "rb");
           if (!fp)
@@ -600,14 +626,13 @@ main (int argc, char **argv)
             }
           else 
             {
-              if ( parse_and_print (fp) )
+              if (parse_and_print (fp))
                 rc = 1;
               fclose (fp);
             }
         }
     }
   
-
-  return !rc;
+  return !!rc;
 }
 
index 81500b1..77825ba 100644 (file)
@@ -909,7 +909,6 @@ unquote_string (const char *string, size_t length, unsigned char *buf)
                 {
                   s++; n--;
                 }
-              esc = 0;
               break;
               
             case '\n':  /* ignore LF[,CR] */
index 4ff10a8..55b8e9a 100644 (file)
@@ -1,3 +1,7 @@
+2009-06-08  Werner Koch  <wk@g10code.com>
+
+       * benchmark.c (cipher_bench): Center labels.  Suggested by Brad Hards.
+
 2009-02-16  Werner Koch  <wk@g10code.com>
 
        * fipsdrv.c (print_buffer): Remove parens from initializer for
index 8f8f04c..07509ae 100644 (file)
@@ -448,12 +448,12 @@ cipher_bench ( const char *algoname )
   size_t allocated_buflen, buflen;
   int repetitions;
   static struct { int mode; const char *name; int blocked; } modes[] = {
-    { GCRY_CIPHER_MODE_ECB, "ECB", 1 },
-    { GCRY_CIPHER_MODE_CBC, "CBC", 1 },
-    { GCRY_CIPHER_MODE_CFB, "CFB", 0 },
-    { GCRY_CIPHER_MODE_OFB, "OFB", 0 },
-    { GCRY_CIPHER_MODE_CTR, "CTR", 0 },
-    { GCRY_CIPHER_MODE_STREAM, "STREAM", 0 },
+    { GCRY_CIPHER_MODE_ECB, "      ECB", 1 },
+    { GCRY_CIPHER_MODE_CBC, "      CBC", 1 },
+    { GCRY_CIPHER_MODE_CFB, "      CFB", 0 },
+    { GCRY_CIPHER_MODE_OFB, "      OFB", 0 },
+    { GCRY_CIPHER_MODE_CTR, "      CTR", 0 },
+    { GCRY_CIPHER_MODE_STREAM, "    STREAM", 0 },
     {0}
   };
   int modeidx;