bug 52949: fix forbidden apis

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1738499 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Javen O'Neal 2016-04-11 01:26:09 +00:00
parent f49047e733
commit d6252e00b1
2 changed files with 14 additions and 6 deletions

View File

@ -19,6 +19,7 @@ package org.apache.poi.util;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.util.Locale;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
@ -74,7 +75,7 @@ public class RLEDecompressingInputStream extends InputStream {
pos = 0; pos = 0;
int header = in.read(); int header = in.read();
if (header != 0x01) { if (header != 0x01) {
throw new IllegalArgumentException(String.format("Header byte 0x01 expected, received 0x%02X", header & 0xFF)); throw new IllegalArgumentException(String.format(Locale.ROOT, "Header byte 0x01 expected, received 0x%02X", header & 0xFF));
} }
len = readChunk(); len = readChunk();
} }
@ -159,12 +160,12 @@ public class RLEDecompressingInputStream extends InputStream {
} }
int chunkSize = (w & 0x0FFF) + 1; // plus 3 bytes minus 2 for the length int chunkSize = (w & 0x0FFF) + 1; // plus 3 bytes minus 2 for the length
if ((w & 0x7000) != 0x3000) { if ((w & 0x7000) != 0x3000) {
throw new IllegalArgumentException(String.format("Chunksize header A should be 0x3000, received 0x%04X", w & 0xE000)); throw new IllegalArgumentException(String.format(Locale.ROOT, "Chunksize header A should be 0x3000, received 0x%04X", w & 0xE000));
} }
boolean rawChunk = (w & 0x8000) == 0; boolean rawChunk = (w & 0x8000) == 0;
if (rawChunk) { if (rawChunk) {
if (in.read(buf, 0, chunkSize) < chunkSize) { if (in.read(buf, 0, chunkSize) < chunkSize) {
throw new IllegalStateException(String.format("Not enough bytes read, expected %d", chunkSize)); throw new IllegalStateException(String.format(Locale.ROOT, "Not enough bytes read, expected %d", chunkSize));
} }
return chunkSize; return chunkSize;
} else { } else {

View File

@ -24,6 +24,8 @@ import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import org.junit.Test; import org.junit.Test;
@ -142,7 +144,7 @@ public class TestRLEDecompressingInputStream {
0x01, 0x03, (byte)0xB0, 0x02, 0x61, 0x45, 0x00 0x01, 0x03, (byte)0xB0, 0x02, 0x61, 0x45, 0x00
}; };
final byte[] expanded = RLEDecompressingInputStream.decompress(compressed); final byte[] expanded = RLEDecompressingInputStream.decompress(compressed);
final byte[] expected = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa".getBytes(); final byte[] expected = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa".getBytes(StringUtil.UTF8);
assertArrayEquals(expected, expanded); assertArrayEquals(expected, expanded);
} }
@ -160,7 +162,12 @@ public class TestRLEDecompressingInputStream {
} catch (final IOException e) { } catch (final IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
String expanded;
assertEquals(expected, out.toString()); try {
expanded = out.toString(StringUtil.UTF8.name());
} catch (final UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
assertEquals(expected, expanded);
} }
} }