
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