From 19390dd8e2396a86538b24c2419ac39615c02b9e Mon Sep 17 00:00:00 2001 From: Enno Rehling Date: Tue, 12 Jan 2016 00:52:42 +0100 Subject: [PATCH] log a warning when passwords would fail for being case-sensitive. add a test to enforce the status quo, for now. --- src/kernel/faction.c | 8 +++++++- src/kernel/faction.test.c | 11 +++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/kernel/faction.c b/src/kernel/faction.c index d13c1ea90..4b41e58cb 100755 --- a/src/kernel/faction.c +++ b/src/kernel/faction.c @@ -313,7 +313,13 @@ unit *addplayer(region * r, faction * f) bool checkpasswd(const faction * f, const char *passwd) { - return (passwd && unicode_utf8_strcasecmp(f->passw, passwd) == 0); + if (!passwd) return false; + if (strcmp(f->passw, passwd)==0) return true; + if (unicode_utf8_strcasecmp(f->passw, passwd) == 0) { + log_warning("case-sensitive password check failed: %s", factionname(f)); + return true; + } + return false; } variant read_faction_reference(struct storage * store) diff --git a/src/kernel/faction.test.c b/src/kernel/faction.test.c index 9c85884b7..578c31c86 100644 --- a/src/kernel/faction.test.c +++ b/src/kernel/faction.test.c @@ -119,6 +119,16 @@ static void test_addfaction(CuTest *tc) { test_cleanup(); } +static void test_check_passwd(CuTest *tc) { + faction *f; + + f = test_create_faction(0); + faction_setpassword(f, "password"); + CuAssertIntEquals(tc, true, checkpasswd(f, "password")); + CuAssertIntEquals(tc, true, checkpasswd(f, "PASSWORD")); + CuAssertIntEquals(tc, false, checkpasswd(f, "assword")); +} + static void test_get_monsters(CuTest *tc) { faction *f; @@ -185,5 +195,6 @@ CuSuite *get_faction_suite(void) SUITE_ADD_TEST(suite, test_get_monsters); SUITE_ADD_TEST(suite, test_set_origin); SUITE_ADD_TEST(suite, test_set_origin_bug); + SUITE_ADD_TEST(suite, test_check_passwd); return suite; }