diff options
author | Werner Koch <wk@gnupg.org> | 2006-06-21 09:19:13 +0000 |
---|---|---|
committer | Werner Koch <wk@gnupg.org> | 2006-06-21 09:19:13 +0000 |
commit | eb9ebf3b7f1bceec03fa8785aa1138be29a73ff2 (patch) | |
tree | 9b1c180778f8e8c4cd9d7ee27406edc7a8c0beef /cipher/md.c | |
parent | 54c8861ff110789261ee546cc76e19c3199c2120 (diff) | |
download | libgcrypt-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.c | 63 |
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 ); |