Skip to content

Commit

Permalink
Check for null pointers in core IInspectable implementation (#3057)
Browse files Browse the repository at this point in the history
  • Loading branch information
kennykerr authored Jun 4, 2024
1 parent 8b4a185 commit 0940e1f
Showing 1 changed file with 9 additions and 0 deletions.
9 changes: 9 additions & 0 deletions crates/libs/core/src/inspectable.rs
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@ impl IInspectable_Vtbl {
count: *mut u32,
values: *mut *mut GUID,
) -> HRESULT {
if count.is_null() || values.is_null() {
return imp::E_POINTER;
}
// Note: even if we end up implementing this in future, it still doesn't need a this pointer
// since the data to be returned is type- not instance-specific so can be shared for all
// interfaces.
Expand All @@ -76,6 +79,9 @@ impl IInspectable_Vtbl {
_: *mut c_void,
value: *mut *mut c_void,
) -> HRESULT {
if value.is_null() {
return imp::E_POINTER;
}
let h: HSTRING = T::NAME.into(); // TODO: should be try_into
*value = transmute::<HSTRING, *mut c_void>(h);
HRESULT(0)
Expand All @@ -84,6 +90,9 @@ impl IInspectable_Vtbl {
this: *mut c_void,
value: *mut i32,
) -> HRESULT {
if value.is_null() {
return imp::E_POINTER;
}
let this = (this as *mut *mut c_void).offset(OFFSET) as *mut T;
(*this).GetTrustLevel(value)
}
Expand Down

0 comments on commit 0940e1f

Please sign in to comment.