1
0
mirror of https://github.com/anope/anope.git synced 2026-06-27 00:36:38 +02:00

Replace convertTo/stringify with non-throwing alternatives.

Having these throw is terrible for ergonomics and there are loads
of places where the exception was either silently ignored or not
handled at all. Having a function which returns an optional and
another that returns a default works a lot better imo.
This commit is contained in:
Sadie Powell
2024-03-11 13:53:05 +00:00
parent e2df7d4d01
commit 29e7674e56
76 changed files with 572 additions and 810 deletions
+7 -11
View File
@@ -142,19 +142,15 @@ public:
if (bcryptprovider.Compare(hash_value, req->GetPassword()))
{
unsigned long rounds = 0;
try
{
// Try to extract the rounds count to cher
pos = hash_value.find('$', 4);
if (pos == Anope::string::npos)
throw ConvertException("Malformed BCrypt hash?!");
rounds = convertTo<unsigned long>(hash_value.substr(4, pos - 4));
}
catch (const ConvertException &)
{
// Try to extract the rounds count to check if we need to
// re-encrypt the password.
pos = hash_value.find('$', 4);
if (pos != Anope::string::npos)
rounds = Anope::Convert<unsigned long>(hash_value.substr(4, pos - 4), 0);
if (!rounds)
Log(LOG_DEBUG) << "Unable to determine the rounds of a bcrypt hash: " << hash_value;
}
// If we are NOT the first encryption module or the Bcrypt rounds
// are different we want to re-encrypt the password with the primary