On 02/15/2013 10:44 AM, Eric Blake wrote:
On 02/15/2013 08:12 AM, John Ferlan wrote:
> On 02/15/2013 08:54 AM, Peter Krempa wrote:
>> On 02/15/13 14:17, Eric Blake wrote:
>>> On 02/15/2013 02:01 AM, Peter Krempa wrote:
>>>
>>>>> So, one could logically believe the check could change to:
>>>>>
>>>>> sa_assert(fd == -1 || (fd >= 3 && fd <= 8));
>>>
>>> Yes, I like that.
>>
>> If I understood it correctly, the above condition won't shut up
>> coverity, only sa_assert(fd == -1) does as coverity then thinks that fd
>> was > 8 and thus closed. Otherwise it does not detect the magic we're
>> doing later.
>
> Yes, correct, hence the need for the "/* coverity[overwrite_var] */ tag.
If you're using the /* coverity[overwrite_var] */ tag, then do we still
need the sa_assert? This is one case where leaving comments to shut up
coverity is fair game, because it is a test program, and because we
already know we are doing some unusual games with fds to get into a
known state.
The sa_assert() would not be required. I think by setting to just -1,
Coverity chose to not check fd >=3 && <=8. That is perhaps it
"tells"
Coverity that we know our inputs and we're guaranteeing that the
VIR_CLOSE will happen.
I will remove the sa_assert and keep the comment.
John