Code cleanup.
authorWerner Koch <wk@gnupg.org>
Mon, 23 Jun 2008 14:43:14 +0000 (14:43 +0000)
committerWerner Koch <wk@gnupg.org>
Mon, 23 Jun 2008 14:43:14 +0000 (14:43 +0000)
sm/ChangeLog
sm/encrypt.c

index 6d7f98a..20ab483 100644 (file)
@@ -1,3 +1,9 @@
+2008-06-23  Werner Koch  <wk@g10code.com>
+
+       * encrypt.c (encode_session_key): Replace xmalloc by xtrymalloc.
+       Use bin2hex instead of open coding the conversion.
+       (encrypt_dek): Init S_DATA.
+
 2008-06-13  Marcus Brinkmann  <marcus@ulysses.g10code.com>
 
        * call-dirmngr.c (prepare_dirmngr): Fix error code to ignore.
index 5f79be1..016e98f 100644 (file)
@@ -1,5 +1,5 @@
 /* encrypt.c - Encrypt a message
- *     Copyright (C) 2001, 2003, 2004, 2007 Free Software Foundation, Inc.
+ * Copyright (C) 2001, 2003, 2004, 2007, 2008 Free Software Foundation, Inc.
  *
  * This file is part of GnuPG.
  *
@@ -144,17 +144,14 @@ static int
 encode_session_key (DEK dek, gcry_sexp_t * r_data)
 {
   gcry_sexp_t data;
-  char * p, tmp[3];
-  int i;
+  char *p;
   int rc;
 
-  p = xmalloc (64 + 2 * dek->keylen);
+  p = xtrymalloc (64 + 2 * dek->keylen);
+  if (!p)
+    return gpg_error_from_syserror ();
   strcpy (p, "(data\n (flags pkcs1)\n (value #");
-  for (i=0; i < dek->keylen; i++)
-    {
-      sprintf (tmp, "%02x", (unsigned char) dek->key[i]);
-      strcat (p, tmp);   
-    }
+  bin2hex (dek->key, dek->keylen, p + strlen (p));
   strcat (p, "#))\n");
   rc = gcry_sexp_sscan (&data, NULL, p, strlen (p));
   xfree (p);
@@ -196,13 +193,14 @@ encrypt_dek (const DEK dek, ksba_cert_t cert, unsigned char **encval)
       return rc;
     }
 
-  /* put the encoded cleartext into a simple list */
+  /* Put the encoded cleartext into a simple list. */
+  s_data = NULL; /* (avoid compiler warning) */
   rc = encode_session_key (dek, &s_data);
   if (rc)
-  {
-    log_error ("encode_session_key failed: %s\n", gpg_strerror (rc));
-    return rc;
-  }
+    {
+      log_error ("encode_session_key failed: %s\n", gpg_strerror (rc));
+      return rc;
+    }
 
   /* pass it to libgcrypt */
   rc = gcry_pk_encrypt (&s_ciph, s_data, s_pkey);