aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--sm/ChangeLog6
-rw-r--r--sm/encrypt.c5
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 <[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.
+
2003-08-14 Timo Schulz <[email protected]>
* 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;