summaryrefslogtreecommitdiff
path: root/cipher/md.c
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>2006-06-21 09:19:13 +0000
committerWerner Koch <wk@gnupg.org>2006-06-21 09:19:13 +0000
commiteb9ebf3b7f1bceec03fa8785aa1138be29a73ff2 (patch)
tree9b1c180778f8e8c4cd9d7ee27406edc7a8c0beef /cipher/md.c
parent54c8861ff110789261ee546cc76e19c3199c2120 (diff)
downloadlibgcrypt-eb9ebf3b7f1bceec03fa8785aa1138be29a73ff2.tar.gz
Changed xmalloc style calls to proper malloc calls with error returns at
many (but not all) places.
Diffstat (limited to 'cipher/md.c')
-rw-r--r--cipher/md.c63
1 files changed, 36 insertions, 27 deletions
diff --git a/cipher/md.c b/cipher/md.c
index b5cd9401..7942e70d 100644
--- a/cipher/md.c
+++ b/cipher/md.c
@@ -440,8 +440,8 @@ md_open (gcry_md_hd_t *h, int algo, int secure, int hmac)
}
if (! ctx->macpads)
{
- md_close (hd);
err = gpg_err_code_from_errno (errno);
+ md_close (hd);
}
}
}
@@ -602,8 +602,8 @@ md_copy (gcry_md_hd_t ahd, gcry_md_hd_t *b_hd)
b->macpads = gcry_malloc_secure (2*(a->macpads_Bsize));
if (! b->macpads)
{
- md_close (bhd);
err = gpg_err_code_from_errno (errno);
+ md_close (bhd);
}
else
memcpy (b->macpads, a->macpads, (2*(a->macpads_Bsize)));
@@ -612,32 +612,41 @@ md_copy (gcry_md_hd_t ahd, gcry_md_hd_t *b_hd)
/* Copy the complete list of algorithms. The copied list is
reversed, but that doesn't matter. */
- if (! err)
- for (ar = a->list; ar; ar = ar->next)
- {
- if (a->secure)
- br = gcry_xmalloc_secure (sizeof *br
- + ar->digest->contextsize
- - sizeof(ar->context));
- else
- br = gcry_xmalloc (sizeof *br
- + ar->digest->contextsize
- - sizeof (ar->context));
- memcpy (br, ar,
- sizeof (*br) + ar->digest->contextsize - sizeof (ar->context));
- br->next = b->list;
- b->list = br;
-
- /* Add a reference to the module. */
- ath_mutex_lock (&digests_registered_lock);
- _gcry_module_use (br->module);
- ath_mutex_unlock (&digests_registered_lock);
- }
-
- if (a->debug)
+ if (!err)
+ {
+ for (ar = a->list; ar; ar = ar->next)
+ {
+ if (a->secure)
+ br = gcry_malloc_secure (sizeof *br
+ + ar->digest->contextsize
+ - sizeof(ar->context));
+ else
+ br = gcry_malloc (sizeof *br
+ + ar->digest->contextsize
+ - sizeof (ar->context));
+ if (!br)
+ {
+ err = gpg_err_code_from_errno (errno);
+ md_close (bhd);
+ break;
+ }
+
+ memcpy (br, ar, (sizeof (*br) + ar->digest->contextsize
+ - sizeof (ar->context)));
+ br->next = b->list;
+ b->list = br;
+
+ /* Add a reference to the module. */
+ ath_mutex_lock (&digests_registered_lock);
+ _gcry_module_use (br->module);
+ ath_mutex_unlock (&digests_registered_lock);
+ }
+ }
+
+ if (a->debug && !err)
md_start_debug (bhd, "unknown");
- if (! err)
+ if (!err)
*b_hd = bhd;
return err;
@@ -822,7 +831,7 @@ gcry_md_ctl (gcry_md_hd_t hd, int cmd, byte *buffer, size_t buflen)
rc = gcry_err_code (gcry_md_setkey (hd, buffer, buflen));
break;
case GCRYCTL_START_DUMP:
- md_start_debug (hd, buffer);
+ md_start_debug (hd, (char*)buffer);
break;
case GCRYCTL_STOP_DUMP:
md_stop_debug( hd );