ggregory 2004/11/24 11:23:25
Modified: codec/src/java/org/apache/commons/codec/binary Base64.java
codec/src/test/org/apache/commons/codec/binary
Base64Test.java
Log:
ASF Bugzilla Bug 30825
[codec] Under some circumstances Base64.isArrayByteBase64() throws a
ArrayIndexOutOfBoundsException.
http://issues.apache.org/bugzilla/show_bug.cgi?id=30825
Revision Changes Path
1.23 +8 -2
jakarta-commons/codec/src/java/org/apache/commons/codec/binary/Base64.java
Index: Base64.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/codec/src/java/org/apache/commons/codec/binary/Base64.java,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- Base64.java 30 Oct 2004 00:18:57 -0000 1.22
+++ Base64.java 24 Nov 2004 19:23:25 -0000 1.23
@@ -153,10 +153,16 @@
lookUpBase64Alphabet[63] = (byte) '/';
}
+ /**
+ * Returns whether or not the <code>octect</code> is in the base 64
alphabet.
+ *
+ * @param octect The value to test
+ * @return <code>true</code> if the value is defined in the the base 64
alphabet, <code>false</code> otherwise.
+ */
private static boolean isBase64(byte octect) {
if (octect == PAD) {
return true;
- } else if (base64Alphabet[octect] == -1) {
+ } else if (octect < 0 || base64Alphabet[octect] == -1) {
return false;
} else {
return true;
1.16 +12 -1
jakarta-commons/codec/src/test/org/apache/commons/codec/binary/Base64Test.java
Index: Base64Test.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/codec/src/test/org/apache/commons/codec/binary/Base64Test.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- Base64Test.java 19 Apr 2004 01:14:29 -0000 1.15
+++ Base64Test.java 24 Nov 2004 19:23:25 -0000 1.16
@@ -513,6 +513,17 @@
assertEquals("The quick brown fox jumped over the lazy
dogs.",new String(Base64.decodeBase64("[EMAIL PROTECTED]@[EMAIL
PROTECTED]@#@@rIGJyb3duIGZve\n\r\t%#%#%#%CBqd##$#$W1wZWQgb3ZlciB0aGUgbGF6eSBkb2dzLg==".getBytes())));
}
+ public void testIsArrayByteBase64() {
+ assertFalse(Base64.isArrayByteBase64(new byte[] {Byte.MIN_VALUE}));
+ assertFalse(Base64.isArrayByteBase64(new byte[] {-125}));
+ assertFalse(Base64.isArrayByteBase64(new byte[] {-10}));
+ assertFalse(Base64.isArrayByteBase64(new byte[] {0}));
+ assertFalse(Base64.isArrayByteBase64(new byte[] {64,
Byte.MAX_VALUE}));
+ assertFalse(Base64.isArrayByteBase64(new byte[] {Byte.MAX_VALUE}));
+ assertTrue(Base64.isArrayByteBase64(new byte[] {'A'}));
+ assertFalse(Base64.isArrayByteBase64(new byte[] {'A',
Byte.MIN_VALUE}));
+ }
+
public void testObjectDecodeWithInvalidParameter() throws Exception {
boolean exceptionThrown = false;
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]