summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>2009-07-02 13:40:15 +0000
committerWerner Koch <wk@gnupg.org>2009-07-02 13:40:15 +0000
commit72cf93388c0aedc50e66dc2ece236a919d4eaf42 (patch)
tree600a69920092a4153eca0220f7cafaf32e4367fe
parent70499fb90345a56f560d13e3f2a86a83e60edca6 (diff)
downloadlibgcrypt-72cf93388c0aedc50e66dc2ece236a919d4eaf42.tar.gz
Minor bug fixes.
-rw-r--r--THANKS2
-rw-r--r--cipher/ChangeLog5
-rw-r--r--cipher/md.c11
-rw-r--r--src/ChangeLog10
-rw-r--r--src/dumpsexp.c39
-rw-r--r--src/sexp.c1
-rw-r--r--tests/ChangeLog4
-rw-r--r--tests/benchmark.c12
8 files changed, 66 insertions, 18 deletions
diff --git a/THANKS b/THANKS
index 84626089..856bac6a 100644
--- 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
diff --git a/cipher/ChangeLog b/cipher/ChangeLog
index 27f686a3..d4e7bf8d 100644
--- a/cipher/ChangeLog
+++ b/cipher/ChangeLog
@@ -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
diff --git a/cipher/md.c b/cipher/md.c
index 5dfbbd95..9528f6d3 100644
--- a/cipher/md.c
+++ b/cipher/md.c
@@ -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
{
diff --git a/src/ChangeLog b/src/ChangeLog
index 1b784e4d..94cc4be9 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -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.
diff --git a/src/dumpsexp.c b/src/dumpsexp.c
index 8f5c0d30..0e64c8b5 100644
--- a/src/dumpsexp.c
+++ b/src/dumpsexp.c
@@ -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;
}
diff --git a/src/sexp.c b/src/sexp.c
index 81500b1a..77825ba0 100644
--- a/src/sexp.c
+++ b/src/sexp.c
@@ -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] */
diff --git a/tests/ChangeLog b/tests/ChangeLog
index 4ff10a87..55b8e9ab 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -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
diff --git a/tests/benchmark.c b/tests/benchmark.c
index 8f8f04ce..07509ae8 100644
--- a/tests/benchmark.c
+++ b/tests/benchmark.c
@@ -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;