java-topology/defects/sfml/patch/sfml-0005-glcontext-extension-unordered-set.patch

29 lines
1,023 B
Diff

# UNDF: UNDF-2026-000000282
Fixes sfml-0005: GlContext::isExtensionAvailable() uses std::find() on string vector.
--- a/src/SFML/Window/GlContext.cpp
+++ b/src/SFML/Window/GlContext.cpp
@@ -210,7 +210,8 @@
namespace
{
- std::vector<std::string> extensions;
+ std::unordered_set<std::string> extensions; // FIX sfml-0005: O(1) lookup — CWE-407
+ // was: std::vector<std::string>, O(n) scan per isExtensionAvailable() call (~200-500 extensions)
}
@@ -263,13 +263,13 @@
extensions.clear();
// ... population unchanged, just push_back → insert:
- extensions.push_back(std::string(extension, extensionString));
+ extensions.insert(std::string(extension, extensionString));
- extensions.push_back(extensionString);
+ extensions.insert(extensionString);
@@ -473,5 +473,5 @@
bool GlContext::isExtensionAvailable(const char* name)
{
- return std::find(extensions.begin(), extensions.end(), name) != extensions.end();
+ return extensions.count(name) > 0; // O(1) hash lookup
}