diff options
-rw-r--r-- | dirmngr/crlcache.c | 7 | ||||
-rw-r--r-- | dirmngr/misc.c | 16 | ||||
-rw-r--r-- | dirmngr/misc.h | 2 |
3 files changed, 16 insertions, 9 deletions
diff --git a/dirmngr/crlcache.c b/dirmngr/crlcache.c index 13d8a262d..25ce7a662 100644 --- a/dirmngr/crlcache.c +++ b/dirmngr/crlcache.c @@ -1345,12 +1345,13 @@ cache_isvalid (ctrl_t ctrl, const char *issuer_hash, if (n != 16) { log_error (_("WARNING: invalid cache record length for S/N ")); + log_printf ("0x"); log_printhex ("", sn, snlen); } else if (opt.verbose) { unsigned char record[16]; - char *tmp = hexify_data (sn, snlen); + char *tmp = hexify_data (sn, snlen, 1); if (cdb_read (cdb, record, n, cdb_datapos (cdb))) log_error (_("problem reading cache record for S/N %s: %s\n"), @@ -1366,7 +1367,7 @@ cache_isvalid (ctrl_t ctrl, const char *issuer_hash, { if (opt.verbose) { - char *serialno = hexify_data (sn, snlen); + char *serialno = hexify_data (sn, snlen, 1); log_info (_("S/N %s is valid, it is not listed in the CRL\n"), serialno ); xfree (serialno); @@ -2095,7 +2096,7 @@ crl_cache_insert (ctrl_t ctrl, const char *url, ksba_reader_t reader) err = gpg_error (GPG_ERR_CHECKSUM); goto leave; } - checksum = hexify_data (md5buf, 16); + checksum = hexify_data (md5buf, 16, 0); } diff --git a/dirmngr/misc.c b/dirmngr/misc.c index c2c5af16a..ac3856e09 100644 --- a/dirmngr/misc.c +++ b/dirmngr/misc.c @@ -59,17 +59,23 @@ hashify_data( const char* data, size_t len ) { unsigned char buf[20]; gcry_md_hash_buffer (GCRY_MD_SHA1, buf, data, len); - return hexify_data( buf, 20 ); + return hexify_data (buf, 20, 0); } char* -hexify_data( const unsigned char* data, size_t len ) +hexify_data (const unsigned char* data, size_t len, int with_prefix) { int i; - char* result = xmalloc( sizeof( char ) * (2*len+1)); + char *result = xmalloc (2*len + (with_prefix?2:0) + 1); + char *p; + + if (with_prefix) + p = stpcpy (result, "0x"); + else + p = result; - for( i = 0; i < 2*len; i+=2 ) - sprintf( result+i, "%02X", *data++); + for (i = 0; i < 2*len; i+=2 ) + snprintf (p+i, 3, "%02X", *data++); return result; } diff --git a/dirmngr/misc.h b/dirmngr/misc.h index d8c53d30a..be4049e88 100644 --- a/dirmngr/misc.h +++ b/dirmngr/misc.h @@ -28,7 +28,7 @@ size_t unhexify (unsigned char *result, const char *string); char* hashify_data( const char* data, size_t len ); /* Returns data as a hex string. */ -char* hexify_data( const unsigned char* data, size_t len ); +char* hexify_data (const unsigned char* data, size_t len, int with_prefix); /* Returns the serial number as a hex string. */ char* serial_hex ( ksba_sexp_t serial ); |