diff --git a/src/headers/tomcrypt.h b/src/headers/tomcrypt.h index 51299af..d38a7c7 100644 --- a/src/headers/tomcrypt.h +++ b/src/headers/tomcrypt.h @@ -61,7 +61,9 @@ enum { CRYPT_PK_INVALID_SIZE, /* Invalid size input for PK parameters */ CRYPT_INVALID_PRIME_SIZE,/* Invalid size of prime requested */ - CRYPT_PK_INVALID_PADDING /* Invalid padding on input */ + CRYPT_PK_INVALID_PADDING, /* Invalid padding on input */ + + CRYPT_HASH_OVERFLOW /* Hash applied to too many bits */ }; #include diff --git a/src/headers/tomcrypt_hash.h b/src/headers/tomcrypt_hash.h index 146dcbc..e750cb8 100644 --- a/src/headers/tomcrypt_hash.h +++ b/src/headers/tomcrypt_hash.h @@ -351,6 +351,9 @@ int func_name (hash_state * md, const unsigned char *in, unsigned long inlen) if (md-> state_var .curlen > sizeof(md-> state_var .buf)) { \ return CRYPT_INVALID_ARG; \ } \ + if ((md-> state_var .length + inlen) < md-> state_var .length) { \ + return CRYPT_HASH_OVERFLOW; \ + } \ while (inlen > 0) { \ if (md-> state_var .curlen == 0 && inlen >= block_size) { \ if ((err = compress_name (md, (unsigned char *)in)) != CRYPT_OK) { \ diff --git a/src/misc/error_to_string.c b/src/misc/error_to_string.c index 034cd18..19f8781 100644 --- a/src/misc/error_to_string.c +++ b/src/misc/error_to_string.c @@ -52,6 +52,9 @@ static const char *err_2_str[] = "Invalid size for prime.", + "Invalid padding.", + + "Hash applied to too many bits.", }; /**