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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user