HADOOP-18471. Fixed ArrayIndexOutOfBoundsException in DefaultStringifier (#4957)
Contributed by FuzzingTeam
This commit is contained in:
parent
a996d889ec
commit
7f69e09290
@ -158,6 +158,9 @@ public static <K> K load(Configuration conf, String keyName,
|
|||||||
public static <K> void storeArray(Configuration conf, K[] items,
|
public static <K> void storeArray(Configuration conf, K[] items,
|
||||||
String keyName) throws IOException {
|
String keyName) throws IOException {
|
||||||
|
|
||||||
|
if (items.length == 0) {
|
||||||
|
throw new IndexOutOfBoundsException();
|
||||||
|
}
|
||||||
DefaultStringifier<K> stringifier = new DefaultStringifier<K>(conf,
|
DefaultStringifier<K> stringifier = new DefaultStringifier<K>(conf,
|
||||||
GenericsUtil.getClass(items[0]));
|
GenericsUtil.getClass(items[0]));
|
||||||
try {
|
try {
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import static org.apache.hadoop.test.LambdaTestUtils.intercept;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
public class TestDefaultStringifier {
|
public class TestDefaultStringifier {
|
||||||
@ -98,7 +99,7 @@ public void testStoreLoad() throws IOException {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testStoreLoadArray() throws IOException {
|
public void testStoreLoadArray() throws Exception {
|
||||||
LOG.info("Testing DefaultStringifier#storeArray() and #loadArray()");
|
LOG.info("Testing DefaultStringifier#storeArray() and #loadArray()");
|
||||||
conf.set("io.serializations", "org.apache.hadoop.io.serializer.JavaSerialization");
|
conf.set("io.serializations", "org.apache.hadoop.io.serializer.JavaSerialization");
|
||||||
|
|
||||||
@ -107,6 +108,8 @@ public void testStoreLoadArray() throws IOException {
|
|||||||
Integer[] array = new Integer[] {1,2,3,4,5};
|
Integer[] array = new Integer[] {1,2,3,4,5};
|
||||||
|
|
||||||
|
|
||||||
|
intercept(IndexOutOfBoundsException.class, () ->
|
||||||
|
DefaultStringifier.storeArray(conf, new Integer[] {}, keyName));
|
||||||
DefaultStringifier.storeArray(conf, array, keyName);
|
DefaultStringifier.storeArray(conf, array, keyName);
|
||||||
|
|
||||||
Integer[] claimedArray = DefaultStringifier.<Integer>loadArray(conf, keyName, Integer.class);
|
Integer[] claimedArray = DefaultStringifier.<Integer>loadArray(conf, keyName, Integer.class);
|
||||||
|
Loading…
Reference in New Issue
Block a user