diff options
| author | 2023-05-08 12:50:42 +0100 | |
|---|---|---|
| committer | 2023-05-08 12:50:42 +0100 | |
| commit | b6db18bd12cc5654f206dd40e6bf16e80cedb7e6 (patch) | |
| tree | c2a4444ae643c720094d0ed702813c9cfe91eb0f /src/helperfuncs.cpp | |
| parent | Fix some uses of NULL that have snuck back in during a merge. (diff) | |
Move CheckPassword to helperfuncs.
Diffstat (limited to 'src/helperfuncs.cpp')
| -rw-r--r-- | src/helperfuncs.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/helperfuncs.cpp b/src/helperfuncs.cpp index ba61d1b0d..4de955464 100644 --- a/src/helperfuncs.cpp +++ b/src/helperfuncs.cpp @@ -37,6 +37,26 @@ #include "duration.h" #include "xline.h" +bool InspIRCd::CheckPassword(const std::string& password, const std::string& passwordhash, const std::string& value) +{ + ModResult res; + FIRST_MOD_RESULT(OnCheckPassword, res, (password, passwordhash, value)); + + if (res == MOD_RES_ALLOW) + return true; // Password explicitly valid. + + if (res == MOD_RES_DENY) + return false; // Password explicitly invalid. + + // The hash algorithm wasn't recognised by any modules. If its plain + // text then we can check it internally. + if (passwordhash.empty() || stdalgo::string::equalsci(passwordhash, "plaintext")) + return TimingSafeCompare(password, value); + + // The password was invalid. + return false; +} + bool InspIRCd::IsValidMask(const std::string& mask) { const char* dest = mask.c_str(); |
