Reviewed-by: Kostiantyn Kostiuk <[email protected]> On Mon, Sep 7, 2026 at 1:50 PM Marc-André Lureau < [email protected]> wrote:
> CQGAVssProvider implements three COM interfaces, each with its own > IUnknown base subobject. Returning the complete object address for > IID_IUnknown relies on IVssSoftwareSnapshotProvider remaining the first > base class. > > Return the IVssSoftwareSnapshotProvider subobject instead. This selects > the canonical IUnknown identity without relying on the complete-object > layout. > > Signed-off-by: Marc-André Lureau <[email protected]> > --- > qga/vss-win32/provider.cpp | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/qga/vss-win32/provider.cpp b/qga/vss-win32/provider.cpp > index 377571b94881..44c3c74bd2f2 100644 > --- a/qga/vss-win32/provider.cpp > +++ b/qga/vss-win32/provider.cpp > @@ -212,7 +212,8 @@ CQGAVssProvider::~CQGAVssProvider() > STDMETHODIMP CQGAVssProvider::QueryInterface(REFIID riid, void **ppObj) > { > if (riid == IID_IUnknown) { > - *ppObj = static_cast<void*>(this); > + *ppObj = static_cast<void*>( > + static_cast<IVssSoftwareSnapshotProvider*>(this)); > AddRef(); > return S_OK; > } > > -- > 2.55.0.543.g5ebe2ebe4ea8 > >
