HADOOP-6224. Add a method to WritableUtils supported a bounded read of an
encoded String. Contributed by Jothi Padmanabhan git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@810384 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
faf9fe98ae
commit
9ea11c5fb3
@ -508,6 +508,9 @@ Trunk (unreleased changes)
|
|||||||
HADOOP-6184. Provide an API to dump Configuration in a JSON format.
|
HADOOP-6184. Provide an API to dump Configuration in a JSON format.
|
||||||
(V.V.Chaitanya Krishna via yhemanth)
|
(V.V.Chaitanya Krishna via yhemanth)
|
||||||
|
|
||||||
|
HADOOP-6224. Add a method to WritableUtils performing a bounded read of an
|
||||||
|
encoded String. (Jothi Padmanabhan via cdouglas)
|
||||||
|
|
||||||
OPTIMIZATIONS
|
OPTIMIZATIONS
|
||||||
|
|
||||||
HADOOP-5595. NameNode does not need to run a replicator to choose a
|
HADOOP-5595. NameNode does not need to run a replicator to choose a
|
||||||
|
@ -415,4 +415,29 @@ public static byte[] toByteArray(Writable... writables) {
|
|||||||
}
|
}
|
||||||
return out.getData();
|
return out.getData();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read a string, but check it for sanity. The format consists of a vint
|
||||||
|
* followed by the given number of bytes.
|
||||||
|
* @param in the stream to read from
|
||||||
|
* @param maxLength the largest acceptable length of the encoded string
|
||||||
|
* @return the bytes as a string
|
||||||
|
* @throws IOException if reading from the DataInput fails
|
||||||
|
* @throws IllegalArgumentException if the encoded byte size for string
|
||||||
|
is negative or larger than maxSize. Only the vint is read.
|
||||||
|
*/
|
||||||
|
public static String readStringSafely(DataInput in,
|
||||||
|
int maxLength
|
||||||
|
) throws IOException,
|
||||||
|
IllegalArgumentException {
|
||||||
|
int length = readVInt(in);
|
||||||
|
if (length < 0 || length > maxLength) {
|
||||||
|
throw new IllegalArgumentException("Encoded byte size for String was " + length +
|
||||||
|
", which is outside of 0.." +
|
||||||
|
maxLength + " range.");
|
||||||
|
}
|
||||||
|
byte [] bytes = new byte[length];
|
||||||
|
in.readFully(bytes, 0, length);
|
||||||
|
return Text.decode(bytes);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user