From: Joel Rosdahl Date: Wed, 18 Aug 2010 19:41:45 +0000 (+0200) Subject: Make hash_result() idempotent X-Git-Tag: v3.1~69 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e0b2f338539dda2d16fcd7cb7071e903709ee6b3;p=thirdparty%2Fccache.git Make hash_result() idempotent --- diff --git a/mdfour.c b/mdfour.c index 52c2fa02a..541e85772 100644 --- a/mdfour.c +++ b/mdfour.c @@ -111,6 +111,7 @@ mdfour_begin(struct mdfour *md) md->D = 0x10325476; md->totalN = 0; md->tail_len = 0; + md->finalized = 0; } static @@ -156,7 +157,10 @@ mdfour_update(struct mdfour *md, const unsigned char *in, size_t n) m = md; if (in == NULL) { - mdfour_tail(md->tail, md->tail_len); + if (!md->finalized) { + mdfour_tail(md->tail, md->tail_len); + md->finalized = 1; + } return; } diff --git a/mdfour.h b/mdfour.h index 885ad830d..c196a09e9 100644 --- a/mdfour.h +++ b/mdfour.h @@ -9,6 +9,7 @@ struct mdfour { size_t totalN; unsigned char tail[64]; size_t tail_len; + int finalized; }; void mdfour_begin(struct mdfour *md);