session: handle NULL return values of crypt()
authorJo-Philipp Wich <jo@mein.io>
Wed, 22 May 2019 12:25:52 +0000 (14:25 +0200)
committerJo-Philipp Wich <jo@mein.io>
Wed, 22 May 2019 12:25:52 +0000 (14:25 +0200)
The crypt() function may return NULL with errno ENOSYS when an attempt
was made to crypt the plaintext password using a salt requesting an
unsupported cipher.

Avoid triggering segmentation faults in the subsequent strcmp() operation
by checking for a non-NULL hash value.

Fixes: FS#2291
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
session.c

index 3ed45197ab9d039e89a189f6bb5c152fa60c61a8..13a2ef36224d122e59b40440b757b30bb29ee3e0 100644 (file)
--- a/session.c
+++ b/session.c
@@ -822,7 +822,7 @@ rpc_login_test_password(const char *hash, const char *password)
 
        crypt_hash = crypt(password, hash);
 
-       return !strcmp(crypt_hash, hash);
+       return (crypt_hash && !strcmp(crypt_hash, hash));
 }
 
 static struct uci_section *