Fix error detection
authorWerner Koch <wk@gnupg.org>
Thu, 8 Jan 2009 19:51:59 +0000 (19:51 +0000)
committerWerner Koch <wk@gnupg.org>
Thu, 8 Jan 2009 19:51:59 +0000 (19:51 +0000)
sm/ChangeLog
sm/fingerprint.c

index b47b3a4..dae0a54 100644 (file)
@@ -1,3 +1,7 @@
+2009-01-08  Werner Koch  <wk@g10code.com>
+
+       * fingerprint.c (gpgsm_get_keygrip_hexstring): Add error detection.
+
 2008-12-10  Werner Koch  <wk@g10code.com>
 
        * gpgsm.c (our_cipher_test_algo): Use the GCRY constants as we now
index 1c65512..6581688 100644 (file)
@@ -152,9 +152,9 @@ gpgsm_get_short_fingerprint (ksba_cert_t cert)
 
 \f
 /* Return the so called KEYGRIP which is the SHA-1 hash of the public
-   key parameters expressed as an canoncial encoded S-Exp.  array must
-   be 20 bytes long. returns the array or a newly allocated one if the
-   passed one was NULL */
+   key parameters expressed as an canoncial encoded S-Exp.  ARRAY must
+   be 20 bytes long.  Returns ARRAY or a newly allocated buffer if ARRAY was
+   given as NULL.  May return NULL on error.  */
 unsigned char *
 gpgsm_get_keygrip (ksba_cert_t cert, unsigned char *array)
 {
@@ -204,9 +204,11 @@ gpgsm_get_keygrip_hexstring (ksba_cert_t cert)
   unsigned char grip[20];
   char *buf;
 
-  gpgsm_get_keygrip (cert, grip);
-  buf = xmalloc (20*2+1);
-  bin2hex (grip, 20, buf);
+  if (!gpgsm_get_keygrip (cert, grip))
+    return NULL;
+  buf = xtrymalloc (20*2+1);
+  if (buf)
+    bin2hex (grip, 20, buf);
   return buf;
 }