btw - I'd be curious to know for the need of such env. From a practical p.o.v.
Piotr On 29 May 2014 10:21, Piotr Stanczyk <piotr.stanc...@gmail.com> wrote: > Nice catch Chris, I will patch that up over the weekend. > > Piotr > > > On 29 May 2014 10:19, Christopher Horvath <blackenc...@gmail.com> wrote: > >> I'm in a crippled environment that explicitly disallows exceptions, and >> has modified underlying some (but not all) underlying libraries >> accordingly. I worked a bit to try to incorporate these restrictions into >> the fuzz tests, but ultimately gave up - I'm trusting that the fuzz tests >> will have been run elsewhere. >> >> Additionally, there's a bug in one of the main tests. In >> testMultiPartSharedAttributes.cpp, in the testHeaders function, the first >> call is to: >> >> vector<Header> headers; >> // expect this to fail - empty header list >> testMultiPartOutputFileForExpectedFailure (headers, >> fn, >> "Header : empty header >> list passed"); >> >> And then inside the testMultiPartOutputFileForExpectedFailure function, >> the code takes the address of the 0'th element of the vector, which is >> invalid for an empty vector, and throws an exception which is not caught: >> >> try >> { >> remove(fn.c_str()); >> MultiPartOutputFile file(fn.c_str(), &headers[0],headers.size()); >> cerr << "ERROR -- " << failMessage << endl; >> assert (false); >> } >> catch (const IEX_NAMESPACE::ArgExc & e) >> { >> // expected behaviour >> } >> >> The &headers[0] is invalid on an empty list, and causes a test failure. >> >> I've just disabled this test locally - all other non-tests succeed. >> >> >> >> On Thu, May 29, 2014 at 10:06 AM, Chris Cox <c...@adobe.com> wrote: >> >>> >>> That could be because "new" is defined in the language as throwing an >>> exception if it fails to allocate memory. Doing a NULL check after "new" >>> would only be necessary if running in a crippled environment that does >>> not >>> support exceptions. >>> >>> Malloc/calloc/realloc should never throw, but return NULL if they fail to >>> allocate memory. >>> >>> >>> Chris >>> >>> >>> On 5/28/14 11:57 PM, "Peter Hillman" <pet...@wetafx.co.nz> wrote: >>> >>> > >>> > The OpenEXR fuzz tests insert bytes into files to test what happens >>> with >>> > accidentally or maliciously damaged files. >>> > When a "length-of-attribute" field in the EXR Header is modified to be >>> > an extremely large number, the library will often attempt to allocate a >>> > large amount of memory to load the supposedly large attribute. There's >>> > no standard place where this happens; each attribute type manages >>> > loading the values itself. The field storing type of the attribute may >>> > also become damaged, causing unusual behaviour. >>> > >>> > It seems like the OpenEXR library does rather assume that calls to >>> 'new' >>> > etc will throw exceptions if they fail, rather than nullptr testing. >>> > This is in the library itself, rather than the fuzz tests. >>> > >>> > >>> > >>> > >>> > >>> > On 29/05/14 13:26, Nick wrote: >>> >> Are you saying you have a malloc implementation that crashes if it >>> can't >>> >> allocate due to not enough memory? Or are you saying that the fuzz >>> test >>> >> relies on an exception not a nullptr test? If the latter it would be >>> better >>> >> to modify the test to null test. If the former, what the heck? >>> >> >>> >> Fuzz tests generally are supposed to demonstrate that the library can >>> survive >>> >> malicious exploits like forced overruns or whatever through malformed >>> files. >>> >> >>> >> If you are crashing, it's a bad malloc, a bad test, or OpenEXR isn't >>> >> completely fuzz safe. >>> >> >>> >> Or this is a different use of the term fuzz testing that I am not >>> familiar >>> >> with ;) >>> >> >>> >> - Nick >>> >> >>> >> Sent from my iPhone >>> >> >>> >>> On May 28, 2014, at 15:01, "Christopher Horvath" < >>> blackenc...@gmail.com> >>> >>> wrote: >>> >>> >>> >>> Hey Folks, >>> >>> >>> >>> It seems like some of the fuzz tests are explicitly attempting to >>> fail by >>> >>> creating large allocations and catching exceptions from failed memory >>> >>> allocations. If you're working with a malloc library that has >>> exceptions >>> >>> turned off, this causes crashes... >>> >>> >>> >>> Is this the correct interpretation of how fuzzScanLines & fuzzFile is >>> >>> intended to work? >>> >>> >>> >>> This seems to be testing that malloc throws correctly - which in my >>> case, it >>> >>> does not - I just want to make sure I can feel comfortable turning >>> these >>> >>> fuzz tests off for the future. >>> >>> >>> >>> Chris >>> >>> >>> >>> -- >>> >>> I think this situation absolutely requires that a really futile and >>> stupid >>> >>> gesture be done on somebody's part. And we're just the guys to do it. >>> >>> _______________________________________________ >>> >>> Openexr-devel mailing list >>> >>> Openexr-devel@nongnu.org >>> >>> https://lists.nongnu.org/mailman/listinfo/openexr-devel >>> >> _______________________________________________ >>> >> Openexr-devel mailing list >>> >> Openexr-devel@nongnu.org >>> >> https://lists.nongnu.org/mailman/listinfo/openexr-devel >>> > >>> > >>> > _______________________________________________ >>> > Openexr-devel mailing list >>> > Openexr-devel@nongnu.org >>> > https://lists.nongnu.org/mailman/listinfo/openexr-devel >>> >>> >> >> >> -- >> I think this situation absolutely requires that a really futile and >> stupid gesture be done on somebody's part. And we're just the guys to do >> it. >> >> _______________________________________________ >> Openexr-devel mailing list >> Openexr-devel@nongnu.org >> https://lists.nongnu.org/mailman/listinfo/openexr-devel >> >> >
_______________________________________________ Openexr-devel mailing list Openexr-devel@nongnu.org https://lists.nongnu.org/mailman/listinfo/openexr-devel