Roger Racine wrote:
> I admit I do not know Java, but from your description below I have one
> Ada allows pointer arithmetic. It is difficult (unchecked conversion is
> needed) but possible. Does Java have any means of "breaking" its
> references (turning them into integers and back again)? If not, then their
> statements are true.
Nope, they are confused. Since I was intimately involved in developing
the Ada => Java byte code compiler, I can tell you that we can't circumvent
any Java security via Ada. You can write whatever crud you want in your
Ada source code, but we are still obligated to generate Java byte codes
that go through the byte-code verifier, and that means you can't
do address arithmetic. There are no "secret" byte codes that Ada
generates that Java doesn't.
Note that there is a Java byte code assembler available as well, which
allows you to choose to produce whatever byte codes you want. These
byte-code assembler programs are just as safe as those written in
Java source code. The only difference is user friendliness. If
the byte code verifier rejects your code, you get a nasty low-level
generally uninterpretable message. If the compiler rejects your
code, it generally gives a slightly friendlier message.
I also wonder whether COE outlaws use of the "Java Native Interface" (JNI),
which allows you to call code written in other languages (e.g. C) from Java.
If they allow that, then that is a much more significant "security" hole.
Via JNI you can pretty much destroy the Java virtual machine, since you
are running in the same address space as the JVM.
> Roger Racine
> Roger Racine
> Draper Laboratory, MS 31
> 555 Technology Sq.
> Cambridge, MA 02139, USA
> 617-258-3939 Fax
-Tucker Taft [log in to unmask] http://www.averstar.com/~stt/
Technical Director, Distributed IT Solutions (www.averstar.com/tools)
AverStar (formerly Intermetrics, Inc.) Burlington, MA USA