diff options
author | Rich Felker <dalias@aerifal.cx> | 2016-02-16 17:38:07 -0500 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2016-02-16 17:38:07 -0500 |
commit | cf115059ba0ecd611008c89c78c37b62f8e6d6af (patch) | |
tree | b54cd9ffab93bfe1eafcf6c084b5cc2fec9397ed /src/crypt/crypt_sha256.c | |
parent | ef2b5e9f13a7f216d6d64aeccc6b33c1262faece (diff) | |
download | musl-cf115059ba0ecd611008c89c78c37b62f8e6d6af.tar.gz musl-cf115059ba0ecd611008c89c78c37b62f8e6d6af.tar.xz musl-cf115059ba0ecd611008c89c78c37b62f8e6d6af.zip |
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.
Diffstat (limited to 'src/crypt/crypt_sha256.c')
-rw-r--r-- | src/crypt/crypt_sha256.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/crypt/crypt_sha256.c b/src/crypt/crypt_sha256.c index d5f0b786..e885dc68 100644 --- a/src/crypt/crypt_sha256.c +++ b/src/crypt/crypt_sha256.c @@ -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 */ |