On 10/03/11 20:55, Ximin Luo wrote: > HURP DURP LETS FREE A NULL POINTER.
My apologies; I see what they mean now. The first malloc won't be freed when subsequent ones fail. Will go fix. > > As for the local arrays, JNI fixes it, or so the docs seemed to claim. I did > ask on the mailing list years ago when I coded it - I'm not an expert either. > No bad effects / leaks reported so far, though. > > I will pay attention to random unjustified quoting of arbitrary "code styles" > when they give an accompanying reason and why it applies in this case. Here's > my counter: the jthrow macro is syntactic sugar that simulates a throw. > > In any case, we should probably switch FEC libraries. It's disabled in 64 bit > due to that segfault issue (see mailing list archives) on certain inputs. > > X > > On 10/03/11 18:07, Matthew Toseland wrote: >> Eleriseth@WPECGLtYbVi8Rl6Y7... >> Trust >> Local Peer >> Message 76 >> Trust List >> Re: New freenet-ext.jar, please test! on 2011-03-10 14:07:05 >> [Permalink] Reply >> Disclaimer: I'm-not-JNI-expert. >> >> toad-notrust@h2RzPS4fEzP0zU43GAfEgxqK2Y55~kEUNR01cWvYApI wrote: >> We want to deploy this soon. Please test it. >> http://downloads.freenetproject.org/alpha/freenet-ext-v27pre8.jar >> >> You can build this from the tag. >> >> Potential memory leak on error path: >> >> === cut fec/src/csrc/fec-jinterf.c === >> #define malloc_jthrow(ENV, PTR, TYPE, NUM) \ >> PTR = (TYPE *) malloc(sizeof(TYPE) * NUM); \ >> if (PTR == NULL) { \ >> (*ENV)->ThrowNew(ENV, (*ENV)->FindClass(ENV, >> "java/lang/OutOfMemoryError"), "malloc failed"); \ >> return; \ >> } \ >> [...] >> /* allocate memory for the arrays */ >> malloc_jthrow(env, inArr, jbyteArray, k); >> malloc_jthrow(env, retArr, jbyteArray, k); >> ^^ who is going to free inArr here? >> >> malloc_jthrow(env, inarr, jbyte *, k); >> same: inArr, retArr >> malloc_jthrow(env, retarr, jbyte *, k); >> same: inArr, retArr, inarr >> [...] >> if ((*env)->PushLocalFrame(env, 3+k+numRet) < 0) { >> return; /* exception OutOfMemoryError */ >> ^^ who is going to free *all* local arrays here? >> } >> [...] >> jref_null_check(localSrcOff); >> same here and a lot of similar code below >> [...] >> inarr[i] += localSrcOff[i]; >> potential integer overflow (and out-of-array access)? >> === cut === >> etc, etc, etc. >> BTW, general code style guides discourage using such >> macros-with-control-statements (goto, return,...). >> >> >> >> _______________________________________________ >> Devl mailing list >> [email protected] >> http://freenetproject.org/cgi-bin/mailman/listinfo/devl > > -- GPG: 4096R/5FBBDBCE _______________________________________________ Devl mailing list [email protected] http://freenetproject.org/cgi-bin/mailman/listinfo/devl
