X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fgcrypt%2Fdigest.c;h=fce48ee26944e89c154780de0dbd4e1b10b0a80e;hb=refs%2Fheads%2F1.1;hp=50446f6e7309f29ee775a2e9f7b90a9da47eb83f;hpb=90cde91141ec61be4354d8deab21edb8fdf01022;p=tinc diff --git a/src/gcrypt/digest.c b/src/gcrypt/digest.c index 50446f6e..e0291689 100644 --- a/src/gcrypt/digest.c +++ b/src/gcrypt/digest.c @@ -111,6 +111,10 @@ bool digest_open_by_nid(digest_t *digest, nid_t nid, size_t maclength) { } void digest_close(digest_t *digest) { + if(!digest) { + return; + } + if(digest->hmac) { gcry_md_close(digest->hmac); } @@ -145,7 +149,7 @@ bool digest_create(digest_t *digest, const void *indata, size_t inlen, void *out memcpy(outdata, tmpdata, digest->maclength); } else { - char tmpdata[len]; + char *tmpdata = alloca(len); gcry_md_hash_buffer(digest->algo, tmpdata, indata, inlen); memcpy(outdata, tmpdata, digest->maclength); } @@ -155,7 +159,7 @@ bool digest_create(digest_t *digest, const void *indata, size_t inlen, void *out bool digest_verify(digest_t *digest, const void *indata, size_t inlen, const void *cmpdata) { size_t len = digest->maclength; - uint8_t outdata[len]; + uint8_t *outdata = alloca(len); return digest_create(digest, indata, inlen, outdata) && !memcmp(cmpdata, outdata, len); }