diff --git a/MusicBot/src/MusicPlayer.cpp b/MusicBot/src/MusicPlayer.cpp index 1af89c9..d7ab79f 100644 --- a/MusicBot/src/MusicPlayer.cpp +++ b/MusicBot/src/MusicPlayer.cpp @@ -78,11 +78,16 @@ void manager::loadProviders(const std::string& path) { } deque paths; - for(const auto& entry : fs::directory_iterator(dir)){ + error_code error_code{}; + for(const auto& entry : fs::directory_iterator(dir, error_code)){ if(!entry.path().has_extension()) continue; if(entry.path().extension().string() == ".so") paths.push_back(entry.path()); } + if(error_code) { + log::log(log::err, "Failed to scan the target directory (" + dir.string() + "): " + error_code.message()); + return; + } std::sort(paths.begin(), paths.end(), [](const fs::path& a, const fs::path& b){ return a.filename().string() < b.filename().string(); }); int index = 0; diff --git a/git-teaspeak b/git-teaspeak index cc874a4..e7befd4 160000 --- a/git-teaspeak +++ b/git-teaspeak @@ -1 +1 @@ -Subproject commit cc874a443ac40fabf0342b410dae5ae46045fa4f +Subproject commit e7befd4fc9c96b966b459ea5ad8530dc8fe9345b diff --git a/music b/music index 7ef7ea7..8e1ce32 160000 --- a/music +++ b/music @@ -1 +1 @@ -Subproject commit 7ef7ea785aebc26d3f9c6e396270e7b03eccf587 +Subproject commit 8e1ce32ae0b03f54efc54e76cd118cf01057159c diff --git a/server/environment/resources b/server/environment/resources deleted file mode 120000 index 9cca8cc..0000000 --- a/server/environment/resources +++ /dev/null @@ -1 +0,0 @@ -../repro/env/resources/ \ No newline at end of file diff --git a/server/src/client/voice/VoiceClientConnection.cpp b/server/src/client/voice/VoiceClientConnection.cpp index eed6e7a..0549e40 100644 --- a/server/src/client/voice/VoiceClientConnection.cpp +++ b/server/src/client/voice/VoiceClientConnection.cpp @@ -369,6 +369,13 @@ bool VoiceClientConnection::next_reassembled_command(unique_lockclient->getServerId(), "{} Failed to calculate decompressed size for received command. Dropping packet.", CLIENT_STR_LOG_PREFIX_(this->client)); + return false; + } else if(decompressed_size > 20 * 1024 * 1024) { /* max 20MB */ + logTrace(this->client->getServerId(), "{} Command packet has a too large compressed size. Dropping packet.", CLIENT_STR_LOG_PREFIX_(this->client)); + return false; + } auto buffer = buffer::allocate_buffer(decompressed_size); if(!compression::qlz_decompress_payload(payload.data_ptr(), buffer.data_ptr(), &decompressed_size)) { logTrace(this->client->getServerId(), "{} Failed to decompress received command. Dropping packet.", CLIENT_STR_LOG_PREFIX_(this->client)); diff --git a/shared b/shared index ee7f26b..16c2272 160000 --- a/shared +++ b/shared @@ -1 +1 @@ -Subproject commit ee7f26b7ed883027f0a81ece1c2aacd41053ce1e +Subproject commit 16c2272fe4b479c55e6db6642d039a42b0774325