stack abuse by linux_ioctl_cdrom

Andriy Gapon avg at freebsd.org
Wed May 20 14:18:30 UTC 2009


on 20/05/2009 15:32 John Baldwin said the following:
> On Wednesday 20 May 2009 8:09:46 am Andriy Gapon wrote:
>> This is a patch that I currently use to fix the problem for myself - both 2KB
>> structs are allocated on the heap.
>> I am not sure what is the proper style for chained calls using chained if-else,
>> but I think that the chaining is the best way to organize that piece of code, so
>> that there is only one exit point from case-block to make sure that FREE is always
>> called.
> 
> I usually use goto for that.  Error handling does seem to be one of the few
> appropriate uses of goto.  In this case you would basically be replacing all
> the 'break's with 'goto out' or some such.  Also, please do not use the MALLOC()
> or FREE() macros in new code as they are deprecated (I think they are completely
> removed in 8).

I used MALLOC/FREE only because I saw that this is what was used in that file
before. I will fix this.

I was reluctant to use goto and label within a case block. In my personal taste
that looks uglier and less safe (e.g. accidental goto from another case or from
outside of switch). I would preferred goto if label was outside of switch/case.
But maybe it's my personal prejudice.
I will follow the style that you will recommend.

-- 
Andriy Gapon


More information about the freebsd-stable mailing list