aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorVaxry <[email protected]>2024-03-30 03:09:22 +0000
committerVaxry <[email protected]>2024-03-30 03:09:22 +0000
commit6fb8f502050c269597636c3b0bfcf046f7f6a947 (patch)
treebfd2e5780f1f3690b1eb5f0a7baa12af571e3d4a
parent54376d7b5f88bffd96ce9ded26637d83d7aa95b1 (diff)
downloadHyprland-6fb8f502050c269597636c3b0bfcf046f7f6a947.tar.gz
Hyprland-6fb8f502050c269597636c3b0bfcf046f7f6a947.zip
hyprpm: avoid crashes on corrupted headers
ref #5329
-rw-r--r--hyprpm/src/core/PluginManager.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/hyprpm/src/core/PluginManager.cpp b/hyprpm/src/core/PluginManager.cpp
index c5926c3e..965f2e9d 100644
--- a/hyprpm/src/core/PluginManager.cpp
+++ b/hyprpm/src/core/PluginManager.cpp
@@ -333,7 +333,12 @@ eHeadersErrors CPluginManager::headersValid() {
std::string verHeaderContent((std::istreambuf_iterator<char>(ifs)), (std::istreambuf_iterator<char>()));
ifs.close();
- std::string hash = verHeaderContent.substr(verHeaderContent.find("#define GIT_COMMIT_HASH") + 23);
+ const auto HASHPOS = verHeaderContent.find("#define GIT_COMMIT_HASH");
+
+ if (HASHPOS == std::string::npos || HASHPOS + 23 >= verHeaderContent.length())
+ return HEADERS_CORRUPTED;
+
+ std::string hash = verHeaderContent.substr(HASHPOS + 23);
hash = hash.substr(0, hash.find_first_of('\n'));
hash = hash.substr(hash.find_first_of('"') + 1);
hash = hash.substr(0, hash.find_first_of('"'));