diff --git a/controller/EmbeddedNetworkController.cpp b/controller/EmbeddedNetworkController.cpp index 21cd78e4c..8f86cc462 100644 --- a/controller/EmbeddedNetworkController.cpp +++ b/controller/EmbeddedNetworkController.cpp @@ -63,24 +63,6 @@ using json = nlohmann::json; namespace ZeroTier { -// JSON blob I/O -/* -static json _readJson(const std::string &path) -{ - std::string buf; - if (OSUtils::readFile(path.c_str(),buf)) { - try { - return json::parse(buf); - } catch ( ... ) {} - } - return json::object(); -} -static bool _writeJson(const std::string &path,const json &obj) -{ - return OSUtils::writeFile(path.c_str(),obj.dump(2)); -} -*/ - // Get JSON values as unsigned integers, strings, or booleans, doing type conversion if possible static uint64_t _jI(const json &jv,const uint64_t dfl) { diff --git a/controller/JSONDB.hpp b/controller/JSONDB.hpp index e33cd768a..617356553 100644 --- a/controller/JSONDB.hpp +++ b/controller/JSONDB.hpp @@ -19,6 +19,9 @@ #ifndef ZT_JSONDB_HPP #define ZT_JSONDB_HPP +#include +#include + #include #include #include @@ -75,7 +78,7 @@ public: inline void filter(const std::string &prefix,unsigned long maxSinceCheck,F func) { for(std::map::iterator i(_db.lower_bound(prefix));i!=_db.end();) { - if (i->first.substr(0,prefix.length()) == prefix) { + if ((i->first.length() >= prefix.length())&&(!memcmp(i->first.data(),prefix.data(),prefix.length()))) { if (!func(i->first,get(i->second.obj,maxSinceCheck))) { std::map::iterator i2(i); ++i2; this->erase(i->first);