From e8cf79c977f81a53487e37d4b284f6f4796617c8 Mon Sep 17 00:00:00 2001 From: Marcus Brinkmann Date: Wed, 20 Aug 2003 16:53:40 +0000 Subject: [PATCH] 2003-08-20 Marcus Brinkmann * encrypt.c (encode_session_key): Allocate enough space. Cast key byte to unsigned char to prevent sign extension. (encrypt_dek): Check return value before error. --- sm/ChangeLog | 6 ++++++ sm/encrypt.c | 5 +++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/sm/ChangeLog b/sm/ChangeLog index 87874ca7f..fbdf15f6c 100644 --- a/sm/ChangeLog +++ b/sm/ChangeLog @@ -1,3 +1,9 @@ +2003-08-20 Marcus Brinkmann + + * encrypt.c (encode_session_key): Allocate enough space. Cast key + byte to unsigned char to prevent sign extension. + (encrypt_dek): Check return value before error. + 2003-08-14 Timo Schulz * encrypt.c (encode_session_key): Use new Libgcrypt interface. diff --git a/sm/encrypt.c b/sm/encrypt.c index b6770a4b5..4eef20c73 100644 --- a/sm/encrypt.c +++ b/sm/encrypt.c @@ -134,11 +134,11 @@ encode_session_key (DEK dek, gcry_sexp_t * r_data) int i; int rc; - p = xmalloc (64+dek->keylen); + p = xmalloc (64 + 2 * dek->keylen); strcpy (p, "(data\n (flags pkcs1)\n (value #"); for (i=0; i < dek->keylen; i++) { - sprintf (tmp, "%02x", dek->key[i]); + sprintf (tmp, "%02x", (unsigned char) dek->key[i]); strcat (p, tmp); } strcat (p, "#))\n"); @@ -184,6 +184,7 @@ encrypt_dek (const DEK dek, KsbaCert cert, char **encval) /* put the encoded cleartext into a simple list */ rc = encode_session_key (dek, &s_data); + if (rc) { log_error ("encode_session_key failed: %s\n", gpg_strerror (rc)); return rc;