aboutsummaryrefslogtreecommitdiffstats
path: root/sm/encrypt.c
diff options
context:
space:
mode:
authorMarcus Brinkmann <[email protected]>2003-08-20 16:53:40 +0000
committerMarcus Brinkmann <[email protected]>2003-08-20 16:53:40 +0000
commite8cf79c977f81a53487e37d4b284f6f4796617c8 (patch)
tree9781a4ae4a01c053a2a5bcebd324911fe8b73596 /sm/encrypt.c
parent* scdaemon.c, scdaemon.h: New option --pcsc-driver. (diff)
downloadgnupg-e8cf79c977f81a53487e37d4b284f6f4796617c8.tar.gz
gnupg-e8cf79c977f81a53487e37d4b284f6f4796617c8.zip
2003-08-20 Marcus Brinkmann <[email protected]>
* 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.
Diffstat (limited to '')
-rw-r--r--sm/encrypt.c5
1 files changed, 3 insertions, 2 deletions
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;