From c61489acbfe3fba0c7fa548161cde50554d623ff Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Fri, 28 Apr 2006 14:32:13 +0000 Subject: [PATCH] Fix for sanitize string. Added SHA224 --- TODO | 5 +++++ include/ChangeLog | 4 ++++ include/cipher.h | 3 +++ jnlib/ChangeLog | 7 +++++++ jnlib/stringhelp.c | 14 +++++++------- 5 files changed, 26 insertions(+), 7 deletions(-) diff --git a/TODO b/TODO index 3e4d21dc6..af3a42605 100644 --- a/TODO +++ b/TODO @@ -106,3 +106,8 @@ might want to have an agent context for each service request * gpg/ ** issue a NO_SECKEY xxxx if a -u key was not found. +** Replace DIGEST_ALGO_SHA224 + We can't do that right now because it is only defined by newer + versions of libgcrypt. Changes this if we require libgcrypt 1.3 + anyway. + diff --git a/include/ChangeLog b/include/ChangeLog index 0211bd618..3fd3fe48c 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,7 @@ +2006-04-28 Werner Koch + + * cipher.h (DIGEST_ALGO_SHA224): Define it. + 2006-04-18 Werner Koch * keyserver.h, i18n.h, http.h, cipher.h: Updated to gpg 1.4.3. diff --git a/include/cipher.h b/include/cipher.h index 681386c36..d8b15cf9a 100644 --- a/include/cipher.h +++ b/include/cipher.h @@ -68,6 +68,9 @@ #define DIGEST_ALGO_SHA256 /* 8 */ GCRY_MD_SHA256 #define DIGEST_ALGO_SHA384 /* 9 */ GCRY_MD_SHA384 #define DIGEST_ALGO_SHA512 /* 10 */ GCRY_MD_SHA512 +/* SHA224 is as of now only defined in the libgcrypt SVN; thus we + can't use that macro. */ +#define DIGEST_ALGO_SHA224 /* 11 */ 11 /* GCRY_MD_SHA224 */ #define COMPRESS_ALGO_NONE 0 #define COMPRESS_ALGO_ZIP 1 diff --git a/jnlib/ChangeLog b/jnlib/ChangeLog index 8816068b0..f3074c6af 100644 --- a/jnlib/ChangeLog +++ b/jnlib/ChangeLog @@ -1,3 +1,10 @@ +2006-04-28 Werner Koch + + * stringhelp.c (print_sanitized_buffer): Fix bug where the count + got wrong for the \xNN representation. + (sanitize_buffer): Fix bug where some control characters lose part + of their \xNN representation. + 2006-04-20 Werner Koch * stringhelp.c (make_basename): New arg INPUTPATH for future diff --git a/jnlib/stringhelp.c b/jnlib/stringhelp.c index e999170dd..d5a2c29b6 100644 --- a/jnlib/stringhelp.c +++ b/jnlib/stringhelp.c @@ -1,6 +1,6 @@ /* stringhelp.c - standard string helper functions - * Copyright (C) 1998, 1999, 2000, 2001, 2003, - * 2004, 2005 Free Software Foundation, Inc. + * Copyright (C) 1998, 1999, 2000, 2001, 2003, 2004, 2005, + * 2006 Free Software Foundation, Inc. * * This file is part of GnuPG. * @@ -367,7 +367,7 @@ print_sanitized_buffer (FILE *fp, const void *buffer, size_t length, else { fprintf (fp, "x%02x", *p); - count += 2; + count += 3; } } else @@ -428,7 +428,7 @@ sanitize_buffer (const void *p_arg, size_t n, int delim) const unsigned char *save_p; char *buffer, *d; - /* first count length */ + /* First count length. */ for (save_n = n, save_p = p, buflen=1 ; n; n--, p++ ) { if ( *p < 0x20 || *p == 0x7f || *p == delim || (delim && *p=='\\')) @@ -437,14 +437,14 @@ sanitize_buffer (const void *p_arg, size_t n, int delim) || *p=='\v' || *p=='\b' || !*p ) buflen += 2; else - buflen += 4; + buflen += 5; } else buflen++; } p = save_p; n = save_n; - /* and now make the string */ + /* And now make the string */ d = buffer = jnlib_xmalloc( buflen ); for ( ; n; n--, p++ ) { @@ -464,7 +464,7 @@ sanitize_buffer (const void *p_arg, size_t n, int delim) *d++ = '0'; else { sprintf(d, "x%02x", *p ); - d += 2; + d += 3; } } else