in crypt-sha*, reject excessive rounds as error rather than clamping

the reference implementation clamps rounds to [1000,999999999]. we
further limited rounds to at most 9999999 as a defense against extreme
run times, but wrongly clamped instead of treating out-of-bounds
values as an error, thereby producing implementation-specific hash
results. fixing this should not break anything since values of rounds
this high are not useful anyway.
This commit is contained in:
Rich Felker
2016-02-16 17:38:07 -05:00
parent ef2b5e9f13
commit cf115059ba
2 changed files with 2 additions and 2 deletions
+1 -1
View File
@@ -230,7 +230,7 @@ static char *sha256crypt(const char *key, const char *setting, char *output)
if (u < ROUNDS_MIN)
r = ROUNDS_MIN;
else if (u > ROUNDS_MAX)
r = ROUNDS_MAX;
return 0;
else
r = u;
/* needed when rounds is zero prefixed or out of bounds */
+1 -1
View File
@@ -252,7 +252,7 @@ static char *sha512crypt(const char *key, const char *setting, char *output)
if (u < ROUNDS_MIN)
r = ROUNDS_MIN;
else if (u > ROUNDS_MAX)
r = ROUNDS_MAX;
return 0;
else
r = u;
/* needed when rounds is zero prefixed or out of bounds */