classpath
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Auditing source code


From: Mark Wielaard
Subject: Re: Auditing source code
Date: Fri, 26 Dec 2003 16:38:44 +0100

Hi all,

On Sun, 2003-12-21 at 15:25, Mark Wielaard wrote:
> Preparing for the source code auditing. The following is what I intend
> to do/have done already.
> 
> [...]
>
> for i in `cat files_libgcj`; do if test -f classpath/$i; \
> then cmp classpath/$i ~/src/gcc/libjava/$i | cut -f1 -d\ | cut -f2- -d/;\
> else echo "$i"; fi; done
> 
> Which gives 212 files that differ.
> The same for kaffe gives 66 that differ.
> 
> We need to find explanations for these differences. I have not done that
> yet. But most differences seem easily explainable.

I just went over the diffs with kaffe CVS. Attached it the audit log.
When the change was an obvious improvement in the kaffe version I just
merged it into Classpath (see address@hidden mailinglist).

I didn't find any anomalies that would indicate tempering with the
Classpath CVS sources.

For java.text and java.io serialization/ObjectStream changes I didn't do
a real complete audit since both the kaffe and libgcj versions differ to
much from Classpath. Both sets of changes probably need an expert to do
the merging. See also the audit log.

Kaffe hackers might want to go over the audit log to see which things
they should update in kaffe CVS.

Cheers,

Mark
gnu/classpath/Configuration.java
- Not in Classpath (derived from .in file).

gnu/java/net/DNSJavaInetAddressImpl.java
gnu/java/net/InetAddressImpl.java
gnu/java/net/SysInetAddressImpl.java
- Part of pure java DNS not (yet?) in CP.

gnu/java/net/SocketInputStream.java
gnu/java/net/SocketOutputStream.java
- Live inside gnu/java/net/PlainSocketImpl.java in Classpath now.
  PlainSocketImpl isn't merged with Classpath yet.

gnu/java/net/URLParseError.java
gnu/java/net/protocol/jar/Handler.java
- Better jar URL parsing, also in libgcj. Took libgcj version for Classpath.

gnu/java/net/protocol/http/Connection.java
- Has a patch for getHeaderFieldKey() and getHeaderField() which looks
  correct (but what about that n--?). libgcj has another patch though.

gnu/java/nio/FileLockImpl.java
gnu/java/nio/SelectorImpl.java
- Kaffe loads a different library (javanio vs nio).

gnu/java/rmi/server/RMIVoidValue.java
gnu/java/rmi/server/UnicastConnectionManager.java
gnu/java/rmi/server/UnicastRemoteCall.java
gnu/java/rmi/server/UnicastServer.java
gnu/java/rmi/server/UnicastServerRef.java
- Kaffe had some updates for primitive types and void return values.
  Imported into Classpath with slight changes to minimize creating new objects.

java/awt/Color.java
- Kaffe just has a different version with a 'nativeValue' field and missing
  ColorPaintContext support.

java/io/BufferedReader.java
- Kaffe had better argument checking and exception messages. Those have been
imported. There are also some logic changes to mark() and readLine() which
have not been synced yet.

java/io/CharArrayReader.java
- Kaffe throws a IndexOutOfBoundsException where we throw a
ArrayIndexOutOfBoundsException. I have no idea why.

java/io/File.java
- Kaffe uses different loadLibrary() call. Some identation differences
(classpath is better). Kaffe has URI support. Kaffe has support for
case-(in)-sensitive file systems for equals() and hashCode().
File(File, String) constructor seems cleaner in Kaffe. Kaffe has a real
implementation for deleteOnExit with a DeleteFileHelper class that should be
compared to the way libgcj handles this (see gnu/gcj/runtime/FileDeleter.java).

java/io/FileDescriptor.java
- Different System.loadLibrary().

java/io/FileInputStream.java
- Kaffe has better security and dir check. (merged)

java/io/LineNumberReader.java
- Kaffe has better argument checking and a couple of logic changes that seem
improvements but haven't investigated further.

java/io/ObjectInputStream.java
java/io/ObjectOutputStream.java
java/io/ObjectStreamClass.java
java/io/ObjectStreamField.java
- To much hacking is going on around these classes in libgcj. Not checked.

java/io/VMObjectStreamClass.java
- Derived class in kaffe from vm/reference in Classpath.

java/lang/Boolean.java
java/lang/Character.java
- Kaffe doesn't have VMClassLoader yet.

java/lang/VMThrowable.java
- Kaffe implementation class, derived from vm/reference in Classpath.

java/lang/reflect/Proxy.java
- Kaffe has an old version from 2002.

java/net/InetAddress.java
- Some diffs. Most come from the pluggable DNS provider support in kaffe that
never made it into Classpath and some ipv6 support. The libgcj version has
also diverged quite a bit. Needs someone with good java.net.InetAddress
knowledge to take a look. But nothing strange in the diff afaics.

java/net/InetSocketAddress.java
- Kaffe has a small diff for the constructor and toString for handling
hostname. I am not sure either implementation is that efficient. To prevent
DNS lookups I would not lookup hostname unless it is really necessary.

java/net/NetworkInterface.java
- Different System.loadLibrary(). Different getRealNetworkInterfaces() native
method that returns a Hashtable not a Vector.

java/net/ServerSocket.java
- Small diff in bind(). According to Guilhem, Michael already has a better
patch.

java/net/Socket.java
- Allow close() to be called multiple times. (merged)

java/net/URI.java
- Kaffe has a (partial) implementation that depends on regex support.

java/net/URL.java
- Kaffe has an old implementation.

java/net/URLStreamHandler.java
- Likewise

java/nio/ByteOrder.java
java/nio/DirectByteBufferImpl.java
java/nio/channels/FileChannelImpl.java
- Kaffe doesn't use System.loadLibrary().

java/rmi/Naming.java
- Kaffe had a small fixlet for lookup, bind and rebind. (merged)

java/text/AttributedCharacterIterator.java
java/text/AttributedString.java
java/text/CollationElementIterator.java
java/text/DecimalFormat.java
java/text/FieldPosition.java
java/text/MessageFormat.java
java/text/NumberFormat.java
java/text/RuleBasedCollator.java
java/text/SimpleDateFormat.java
- Both kaffe and libgcj have diverged quite bit from Classpath. NOT CHECKED.

java/util/GregorianCalendar.java
- Kaffe already had the AM_PM fix (merged).
There is one small functional change in computeFields() and some minor
indentation diffs. Needs investigation.

java/util/TimeZone.java
- Kaffe uses different System.loadLibrary() argument.

javax/net/ssl/Engine.java
- Not actually part of Classpath.

lib/gnu/java/locale/iso3166-a3.properties
lib/gnu/java/locale/iso3166.properties
lib/gnu/java/locale/iso3166_de.properties
lib/gnu/java/locale/iso639-a2-old.properties
lib/gnu/java/locale/iso639-a3.properties
lib/gnu/java/locale/iso639.properties
lib/gnu/java/locale/iso639_de.properties
lib/gnu/java/locale/iso639_fr.properties
lib/gnu/java/locale/iso639_ga.properties
- Same as Classpath versions, just other dir.

pure-java/math/gnu/java/math/MPN.java
- Same as Classpath version, just other dir.

pure-java/math/java/math/BigDecimal.java
- Kaffe seems to have an old version from 2002.

pure-java/math/java/math/BigInteger.java
- Likewise.

Attachment: signature.asc
Description: This is a digitally signed message part


reply via email to

[Prev in Thread] Current Thread [Next in Thread]