Paul Vriens wrote:
On 05/20/2010 01:15 AM, Michael Stefaniuc wrote:
The last "goto done" is for si == NULL. When MSI_GetSummaryInformationW returns NULL there is a crash.
dlls/msi/msi.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/dlls/msi/msi.c b/dlls/msi/msi.c index 3170e6d..9c08d1b 100644 --- a/dlls/msi/msi.c +++ b/dlls/msi/msi.c @@ -551,7 +551,8 @@ static UINT MSI_ApplicablePatchW( MSIPACKAGE *package, LPCWSTR patch )
done: msiobj_release(&patch_db->hdr );
- msiobj_release(&si->hdr );
- if (si)
}msiobj_release(&si->hdr ); return r;
Hi Michael,
This one is mentioned by Coverity (#970). Marcus marked this one as 'FALSE' with the remark:
"hdr is at position 0, so this will be NULL and msiobj_release handles it."
Thoughts?
Do the compilers treat the addressof operator on the struct member as si + FIELD_OFFSET(MSISUMMARYINFO, hdr) ? Then yes, no dereference happens and the result of the above calculation is NULL which is fine as input for msiobj_release().
bye michael