]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_pbkdf2.cpp
Fix the cloaking module on C++98 compilers.
[user/henk/code/inspircd.git] / src / modules / m_pbkdf2.cpp
index a4ac69f127dbc8067c420642a58e903f7b8ca78e..daafa7f8c72e9fc8de2275de03d17905522b5576 100644 (file)
@@ -1,10 +1,10 @@
 /*
  * InspIRCd -- Internet Relay Chat Daemon
  *
+ *   Copyright (C) 2018, 2020 Sadie Powell <sadie@witchery.services>
  *   Copyright (C) 2018 linuxdaemon <linuxdaemon.irc@gmail.com>
- *   Copyright (C) 2018 Sadie Powell <sadie@witchery.services>
+ *   Copyright (C) 2014, 2020 Daniel Vassdal <shutter@canternet.org>
  *   Copyright (C) 2014, 2016 Attila Molnar <attilamolnar@hush.com>
- *   Copyright (C) 2014 Daniel Vassdal <shutter@canternet.org>
  *
  * This file is part of InspIRCd.  InspIRCd is free software: you can
  * redistribute it and/or modify it under the terms of the GNU General Public
@@ -126,7 +126,7 @@ class PBKDF2Provider : public HashProvider
                        return false;
 
                std::string cmp = PBKDF2(input, hs.salt, hs.iterations, hs.length);
-               return (cmp == hs.hash);
+               return InspIRCd::TimingSafeCompare(cmp, hs.hash);
        }
 
        std::string ToPrintable(const std::string& raw) CXX11_OVERRIDE
@@ -209,6 +209,14 @@ class ModulePBKDF2 : public Module
                stdalgo::delete_all(providers);
        }
 
+       void init() CXX11_OVERRIDE
+       {
+               // Let ourself know about any existing services.
+               const ModuleManager::DataProviderMap& dataproviders = ServerInstance->Modules->DataProviders;
+               for (ModuleManager::DataProviderMap::const_iterator it = dataproviders.begin(); it != dataproviders.end(); ++it)
+                       OnServiceAdd(*it->second);
+       }
+
        void OnServiceAdd(ServiceProvider& provider) CXX11_OVERRIDE
        {
                // Check if it's a hash provider