diff options
author | ume <ume@FreeBSD.org> | 2014-06-05 15:16:44 +0000 |
---|---|---|
committer | ume <ume@FreeBSD.org> | 2014-06-05 15:16:44 +0000 |
commit | 6f5c5395e9e213b5ff6a372a655235871d992b67 (patch) | |
tree | 5b2ae553491399c0541a0a4326fdcefb115d6787 /lib/libcrypt/crypt.c | |
parent | 226f09e56ee391e9ee059bd93892eadb16de4fc2 (diff) | |
download | FreeBSD-src-6f5c5395e9e213b5ff6a372a655235871d992b67.zip FreeBSD-src-6f5c5395e9e213b5ff6a372a655235871d992b67.tar.gz |
MFH r266813: Don't break the legacy applications which set
just 2 bytes to salt.
Diffstat (limited to 'lib/libcrypt/crypt.c')
-rw-r--r-- | lib/libcrypt/crypt.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/lib/libcrypt/crypt.c b/lib/libcrypt/crypt.c index 040fdc1..c3ca4c2 100644 --- a/lib/libcrypt/crypt.c +++ b/lib/libcrypt/crypt.c @@ -104,12 +104,16 @@ char * crypt(const char *passwd, const char *salt) { const struct crypt_format *cf; +#ifdef HAS_DES + int len; +#endif for (cf = crypt_formats; cf->name != NULL; ++cf) if (cf->magic != NULL && strstr(salt, cf->magic) == salt) return (cf->func(passwd, salt)); #ifdef HAS_DES - if (strlen(salt) == 13 && strspn(salt, DES_SALT_ALPHABET) == 13) + len = strlen(salt); + if ((len == 13 || len == 2) && strspn(salt, DES_SALT_ALPHABET) == len) return (crypt_des(passwd, salt)); #endif return (crypt_format->func(passwd, salt)); |