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
commit 3d0107c98b
No known key found for this signature in database
GPG key ID: 8C6E5FEB5FC03CCC

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])