Ver código fonte

bots: Fix sorting to account for all dots

Bryan Drewery 7 anos atrás
pai
commit
0381acbf51
1 arquivos alterados com 12 adições e 17 exclusões
  1. 12 17
      src/botnet.cc

+ 12 - 17
src/botnet.cc

@@ -565,23 +565,18 @@ sortNodes(const bd::String& nodeA, const bd::String& nodeB) {
     return false;
     return false;
   }
   }
   // Reverse the domains
   // Reverse the domains
-  const bd::Array<bd::String> partsA(nodeA.split("."));
-  const bd::Array<bd::String> partsB(nodeB.split("."));
-  bd::Array<bd::String> reversedPartsA, reversedPartsB;
-  bd::String reversedNodeA, reversedNodeB;
-
-  if (partsA.length()) {
-    for (size_t i = partsA.length(); i > 0; --i) {
-      reversedPartsA << partsA[i - 1];
-    }
-  }
-  if (partsB.length()) {
-    for (size_t i = partsB.length(); i > 0; --i) {
-      reversedPartsB << partsB[i - 1];
-    }
-  }
-  reversedNodeA = reversedPartsA.join(".");
-  reversedNodeB = reversedPartsB.join(".");
+  auto partsA(nodeA.split("."));
+  auto partsB(nodeB.split("."));
+  if (partsA.size() < partsB.size())
+    while (partsA.size() < partsB.size())
+      partsA.push_back(".");
+  else
+    while (partsB.size() < partsA.size())
+      partsB.push_back(".");
+  std::reverse(partsA.begin(), partsA.end());
+  std::reverse(partsB.begin(), partsB.end());
+  const auto& reversedNodeA(partsA.join("."));
+  const auto& reversedNodeB(partsB.join("."));
   return reversedNodeA < reversedNodeB;
   return reversedNodeA < reversedNodeB;
 }
 }