1
0
mirror of https://github.com/godotengine/godot.git synced 2026-01-05 19:31:35 +00:00

Merge pull request #105548 from jss2a98aj/windows-validate-VARIANT-in-get_video_adapter_driver_info

Ensure `VARIANT` instances are actually `VT_BSTR` before treating them as such in `OS_Windows::get_video_adapter_driver_info()`
This commit is contained in:
Thaddeus Crews
2025-04-22 10:44:28 -05:00

View File

@@ -723,7 +723,7 @@ Vector<String> OS_Windows::get_video_adapter_driver_info() const {
BSTR object_name = SysAllocString(L"DriverName");
hr = pnpSDriverObject[0]->Get(object_name, 0, &dn, nullptr, nullptr);
SysFreeString(object_name);
if (hr == S_OK) {
if (hr == S_OK && dn.vt == VT_BSTR) {
String d_name = String(V_BSTR(&dn));
if (d_name.is_empty()) {
object_name = SysAllocString(L"DriverProviderName");
@@ -739,8 +739,10 @@ Vector<String> OS_Windows::get_video_adapter_driver_info() const {
object_name = SysAllocString(L"DriverProviderName");
hr = pnpSDriverObject[0]->Get(object_name, 0, &dn, nullptr, nullptr);
SysFreeString(object_name);
if (hr == S_OK) {
if (hr == S_OK && dn.vt == VT_BSTR) {
driver_name = String(V_BSTR(&dn));
} else {
driver_name = "Unknown";
}
}
@@ -749,8 +751,10 @@ Vector<String> OS_Windows::get_video_adapter_driver_info() const {
object_name = SysAllocString(L"DriverVersion");
hr = pnpSDriverObject[0]->Get(object_name, 0, &dv, nullptr, nullptr);
SysFreeString(object_name);
if (hr == S_OK) {
if (hr == S_OK && dv.vt == VT_BSTR) {
driver_version = String(V_BSTR(&dv));
} else {
driver_version = "Unknown";
}
for (ULONG i = 0; i < resultCount; i++) {
SAFE_RELEASE(pnpSDriverObject[i])