diff options
Diffstat (limited to 'src/server/service/policy-file.cpp')
-rw-r--r-- | src/server/service/policy-file.cpp | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/src/server/service/policy-file.cpp b/src/server/service/policy-file.cpp index f3c38d3..3c96320 100644 --- a/src/server/service/policy-file.cpp +++ b/src/server/service/policy-file.cpp @@ -24,6 +24,7 @@ #include <policy-file.h> #include <fstream> +#include <vector> #include <regex.h> #include <fcntl.h> @@ -212,25 +213,20 @@ namespace AuthPasswd m_policy.minComplexCharNumber = minComplexCharNumber; } - // policy maxCharOccurrences bool PolicyFile::checkMaxCharOccurrences(const std::string &password) const { - unsigned int i = 0; - unsigned char ch; - char occurrence[256]= {0, }; + std::vector<unsigned int> occurrence(256, 0); if (m_policy.maxCharOccurrences == 0) return true; - for (i = 0; i < password.size(); i++) { - ch = (unsigned char)password[i]; - occurrence[ch]++; - } + for (auto ch : password) + occurrence[static_cast<unsigned char>(ch)]++; - for (i = 0; i<256; i++) { - if(occurrence[i] > m_policy.maxCharOccurrences) + for (auto item : occurrence) + if (item > m_policy.maxCharOccurrences) return false; - } + return true; } |