From f225f4cd62841935047d4eac1c42279856f7c22d Mon Sep 17 00:00:00 2001 From: Iker Pedrosa Date: Wed, 4 Feb 2026 11:15:56 +0100 Subject: [PATCH] tests/unit/test_chkhash.c: add special test cases *, ! and empty strings are special valid cases for shadow's second field. Add test cases for them. Signed-off-by: Iker Pedrosa --- tests/unit/test_chkhash.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/tests/unit/test_chkhash.c b/tests/unit/test_chkhash.c index 3ae91b19f..e7649e047 100644 --- a/tests/unit/test_chkhash.c +++ b/tests/unit/test_chkhash.c @@ -132,6 +132,26 @@ test_is_valid_hash_ok_des(void **) } +static void +test_is_valid_hash_ok_special(void **) +{ + // Empty string - passwordless account + assert_true(is_valid_hash("")); + + // Single asterisk - password permanently locked + assert_true(is_valid_hash("*")); + + // Single ! - temporarily locked passwordless account + assert_true(is_valid_hash("!")); + + // Leading ! prefix - temporarily locked account with SHA-512 hash + assert_true(is_valid_hash("!$6$salt$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890./abcdefghijklmnopqrstuv")); + + // Leading ! prefix - temporarily locked account with yescrypt hash + assert_true(is_valid_hash("!$y$j9T$salt$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQ")); +} + + int main(void) { @@ -142,6 +162,7 @@ main(void) cmocka_unit_test(test_is_valid_hash_ok_sha256), cmocka_unit_test(test_is_valid_hash_ok_md5), cmocka_unit_test(test_is_valid_hash_ok_des), + cmocka_unit_test(test_is_valid_hash_ok_special), }; return cmocka_run_group_tests(tests, NULL, NULL); -- 2.47.3