[kaffe] Re: PATCH: truncated class handling
Jim Pick
jim at kaffe.org
Wed May 29 16:05:31 PDT 2002
It looks good, so I checked it in. Tell me if I screwed it up.
(The patch queue is looking a lot shorter...)
Cheers,
- Jim
On Mon, 2002-04-15 at 15:49, Patrick Tullmann wrote:
>
> I discovered the other day that Kaffe didn't correctly handle
> truncated class files (it just segfaulted, and threw a null pointer
> exception). I figured this would be a relatively easy fix (just add
> some buffer length checks in various places in readClass).
>
> It wasn't. The main culprit was kaffeh, which used its own bastarized
> version of the readClass macros. I bashed on kaffeh until it was able
> to use the main kaffevm functions for reading classes, and took the
> opportunity to clean up a bunch of other things in kaffeh (and some in
> kaffevm).
>
> A completely unrelated hack to kaffe/scripts/kaffe.in to automatically
> figure out a unique name for KAFFE_DEBUG_TEMPFILE is also included.
>
> The patch (92k) and a ChangeLog entry are available here:
> http://www.tullmann.org/pat/kaffe/
>
> I've attached the ChangeLog entry here. I can check this in, but want
> to know if I should check it in now, or if we should wait for after
> the 1.0.7 release. Other feedback or issues are welcomed, too.
>
> -Pat
>
> ----- ----- ---- --- --- -- - - - - -
> Pat Tullmann tullmann at cs.utah.edu
> The early bird gets the worm, so sleep in.
>
> Pat Tullmann <pat at tullmann.org>:
> * kaffe/kaffeh/mem.c, kaffe/kaffeh/Makefile.am,
> kaffe/kaffeh/java_lang_ClassLoader.h,
> kaffe/kaffeh/java_lang_Object.h,
> kaffe/kaffeh/kaffeh-support.h, kaffe/kaffeh/main.c,
> kaffe/kaffeh/sigs.c, kaffe/kaffeh/support.c,
> kaffe/kaffevm/Makefile.am, kaffe/kaffevm/baseClasses.c,
> kaffe/kaffevm/classMethod.c, kaffe/kaffevm/classMethod.h,
> kaffe/kaffevm/classpath.h, kaffe/kaffevm/code.c,
> kaffe/kaffevm/code.h, kaffe/kaffevm/constants.c,
> kaffe/kaffevm/constants.h, kaffe/kaffevm/exception.c,
> kaffe/kaffevm/file.h, kaffe/kaffevm/lookup.c,
> kaffe/kaffevm/readClass.c, kaffe/kaffevm/readClass.h,
> kaffe/kaffevm/support.c, kaffe/kaffevm/utf8const.c:
> Handle truncated classes in readClass. Also took the
> opportunity to clean up some really ugly macros, and share
> more code between kaffevm and kaffeh. Moved the buffer
> reading macros used by readClass() into inline functions with
> asserts. Added many 'const' to various 'char *'. Split
> kaffeh mem-related code into a new file. kaffeh overrides
> various functions now, but does not override internal header
> files or macros. Cleaned up the kaffeh java_lang_* headers.
> Add -Xdebug option to kaffeh, as kaffeh can now use the
> kaffevm debug.c infrastructure. Moved class-specific constant
> table parsing macros into classMethod.h (out of constants.h).
>
> * kaffe/kaffeh/mem.c, kaffe/kaffevm/utfconst.h:
> Added as part of above.
>
> * kaffe/kaffeh/constants.c, kaffe/kaffeh/constants.h,
> * kaffe/kaffeh/file.h, kaffe/kaffeh/readClassConfig.h,
> * kaffe/kaffevm/readClassConfig.h:
> Removed as part of above.
>
> * kaffe/kaffevm/debug.c,kaffe/kaffevm/debug.h:
> Added READCLASS flag to debug infrastructure. dbgSetMaskStr()
> now takes a 'const char*'. debug.h is usable in Kaffeh, so
> many hacks were removed. Made GCC understand that
> kaffe_dprintf works just like printf, so it can debug the
> format strings (several debug format strings were fixed
> because of these valid warnings).
>
> * kaffe/kaffevm/findInJar.c, libraries/clib/native/ClassLoader.c
> Use the new file.h classFile interface,
>
> * kaffe/kaffevm/utf8const.h, kaffe/kaffevm/string.c,
> kaffe/kaffevm/stringSupport.h:
> To cleanly share the utf8 code between kaffeh and kaffevm,
> created kaffevm/utf8const.h which contains only the
> utf8-related functions, types and macros.
>
> * test/regression/Makefile.am,
> test/regression/TruncatedClass.java:
> Added a new regression test TruncatedClass.java that tests
> truncated classes.
>
> * kaffe/kaffevm/inflate.c, kaffe/kaffevm/jni.c,
> libraries/clib/native/Runtime.c
> Minor comment changes and cleanups
>
> * kaffe/kaffevm/mem/gc-incremental.c,
> kaffe/kaffevm/mem/gc-incremental.h,
> kaffe/kaffevm/mem/gc-mem.c, kaffe/kaffevm/mem/gc-mem.h:
> Added some asserts to the gc, and some more comments.
>
> * kaffe/scripts/kaffe.in:
> Try to automatically find a unique name for the
> KAFFE_DEBUG_TEMPFILE.
More information about the kaffe
mailing list