You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ol...@apache.org on 2012/04/19 11:17:45 UTC
svn commit: r1327885 - in
/archiva/trunk/archiva-modules/archiva-base/archiva-xml-tools/src:
main/java/org/apache/archiva/xml/LatinEntityResolutionReader.java
test/java/org/apache/archiva/xml/LatinEntityResolutionReaderTest.java
Author: olamy
Date: Thu Apr 19 09:17:44 2012
New Revision: 1327885
URL: http://svn.apache.org/viewvc?rev=1327885&view=rev
Log:
[MRM-1625] java.lang.ArrayIndexOutOfBoundsException from parsing maven-metadata.xml
Submitted by charlie kim.
Modified:
archiva/trunk/archiva-modules/archiva-base/archiva-xml-tools/src/main/java/org/apache/archiva/xml/LatinEntityResolutionReader.java
archiva/trunk/archiva-modules/archiva-base/archiva-xml-tools/src/test/java/org/apache/archiva/xml/LatinEntityResolutionReaderTest.java
Modified: archiva/trunk/archiva-modules/archiva-base/archiva-xml-tools/src/main/java/org/apache/archiva/xml/LatinEntityResolutionReader.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-xml-tools/src/main/java/org/apache/archiva/xml/LatinEntityResolutionReader.java?rev=1327885&r1=1327884&r2=1327885&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-xml-tools/src/main/java/org/apache/archiva/xml/LatinEntityResolutionReader.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-xml-tools/src/main/java/org/apache/archiva/xml/LatinEntityResolutionReader.java Thu Apr 19 09:17:44 2012
@@ -69,12 +69,13 @@ public class LatinEntityResolutionReader
{
// Copy partial leftover.
System.arraycopy( leftover, 0, destbuf, current_requested_offset, length );
+ int copyLeftOverLength = leftover.length - length;
// Create new leftover of remaining.
- char tmp[] = new char[length];
- System.arraycopy( leftover, length, tmp, 0, length );
+ char tmp[] = new char[copyLeftOverLength];
+ System.arraycopy( leftover, length, tmp, 0, copyLeftOverLength );
leftover = new char[tmp.length];
- System.arraycopy( tmp, 0, leftover, 0, length );
+ System.arraycopy( tmp, 0, leftover, 0, copyLeftOverLength );
// Return len
return length;
Modified: archiva/trunk/archiva-modules/archiva-base/archiva-xml-tools/src/test/java/org/apache/archiva/xml/LatinEntityResolutionReaderTest.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-xml-tools/src/test/java/org/apache/archiva/xml/LatinEntityResolutionReaderTest.java?rev=1327885&r1=1327884&r2=1327885&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-xml-tools/src/test/java/org/apache/archiva/xml/LatinEntityResolutionReaderTest.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-xml-tools/src/test/java/org/apache/archiva/xml/LatinEntityResolutionReaderTest.java Thu Apr 19 09:17:44 2012
@@ -23,8 +23,17 @@ import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
import java.io.Reader;
import java.io.StringWriter;
+import java.net.URL;
+
+import junit.framework.Assert;
+
+import org.dom4j.Document;
+import org.dom4j.DocumentException;
+import org.dom4j.io.SAXReader;
/**
* LatinEntityResolutionReaderTest
@@ -193,6 +202,29 @@ public class LatinEntityResolutionReader
assertProperRead( expected, "no-prolog-with-entities.xml", 409600 );
}
+
+
+ public void testReaderLeftOver()
+ throws IOException
+ {
+ File inputFile = getExampleXml( "maven-metadata-leftover.xml" );
+ //Bits from RepositoryMetadataReader.read
+ InputStream in = null;
+ SAXReader reader = new SAXReader();
+ URL url = inputFile.toURL();
+ in = url.openStream();
+ InputStreamReader inReader = new InputStreamReader( in, "UTF-8" );
+ LatinEntityResolutionReader latinReader = new LatinEntityResolutionReader( inReader );
+ try {
+ reader.read( latinReader );
+ } catch (DocumentException e) {
+ Assert.fail("Should not have failed here." + e);
+ throw new IOException(e);
+ }
+ }
+
+
+
public void testNoLatinEntitiesHugeLine()
{
assertProperRead( "commons-codec-1.2.pom", "commons-codec-1.2.pom", 4096 );