Joerg Schilling wrote:
> Juergen Keil <[EMAIL PROTECTED]> wrote:
> 
>> Hmm, in usr/src/uts/common/fs/hsfs/hsfs_vfsops.c function hs_mountfs(),
>> whenever we use one of the first three |goto cleanup|,  the local variables
>> |svp| and |jvp| are uninitialized.  That should corrupt the kernel heap
>> when we kmem_free() with an unitialized stack lock pointer in the
>> cleanup section ...
>>
>>
>>
>>         struct hs_volume *svp;          /* Supplemental VD for ISO-9660:1999 
>> */
>>         struct hs_volume *jvp;          /* Joliet VD */
>>
> 
> I have to admit that I am responsible for the uninitialized Joliet VD pointer.
> Duplicating code is simple and in this case even passed 4 !!!! code reviews.
> 
> Does it help to intialize the pointers to NULL?
> 

Sure. This code

     943        if (fsp)
     944                kmem_free(fsp, sizeof (*fsp));
     945        if (svp)
     946                kmem_free(svp, sizeof (*svp));
     947        if (jvp)
     948                kmem_free(jvp, sizeof (*jvp));

will behave very differently if those pointers are NULL rather than 
uninitialized.

        Scott
_______________________________________________
opensolaris-discuss mailing list
opensolaris-discuss@opensolaris.org

Reply via email to