loader: Fix missing bounds check in parse_id_filter_environment_var Both parse_generic_filter_environment_var and parse_layers_disable_filter_environment_var correctly guard against exceeding MAX_ADDITIONAL_FILTERS before writing into their fixed-size filter arrays. parse_id_filter_environment_var was the only filter parser that lacked this guard, meaning a sufficiently long comma- separated environment variable (e.g. VK_LOADER_DEBUG) could write beyond the end of loader_envvar_id_filter::filters[MAX_ADDITIONAL_FILTERS], overflowing the stack or adjacent heap memory. Add the same count >= MAX_ADDITIONAL_FILTERS early-break that the other two parsers already use, and emit a WARN log entry so users know that entries beyond the limit are silently ignored. Fixes: write past end of loader_envvar_id_filter::filters[] Reported-by: code review Reviewed-by: (pending)
This project provides the Khronos official Vulkan Loader for all platforms except Android
Vulkan is an explicit API, enabling direct control over how GPUs actually work. As such, Vulkan supports systems that have multiple GPUs, each running with a different driver, or ICD (Installable Client Driver). Vulkan also supports multiple global contexts (instances, in Vulkan terminology). The ICD loader is a library that is placed between a Vulkan application and any number of Vulkan drivers, in order to support multiple drivers and the instance-level functionality that works across these drivers. Additionally, the loader manages inserting Vulkan layer libraries, such as validation layers, between an application and the drivers.
This repository contains the Vulkan loader that is used for Linux, Windows, MacOS, and iOS. There is also a separate loader, maintained by Google, which is used on Android.
The following components are available in this repository:
Please see the CONTRIBUTING.md file in this repository for more details. Please see the GOVERNANCE.md file in this repository for repository management details.
BUILD.md includes directions for building all components.
Architecture and interface information for the loader is in docs/LoaderInterfaceArchitecture.md.
Updates to this repository which correspond to a new Vulkan specification release are tagged using the following format: v<version> (e.g., v1.3.266).
Note: Marked version releases have undergone thorough testing but do not imply the same quality level as SDK tags. SDK tags follow the vulkan-sdk-<version>.<patch> format (e.g., vulkan-sdk-1.3.266.0).
This scheme was adopted following the 1.3.266 Vulkan specification release.
This work is released as open source under a Apache-style license from Khronos including a Khronos copyright.
While this project has been developed primarily by LunarG, Inc., there are many other companies and individuals making this possible: Valve Corporation, funding project development; Khronos providing oversight and hosting of the project.