Recover from corrupt network stats.

When encountering corrupt stats, throw as IOException to allow
recovery at a higher level.

Bug: 9794832
Change-Id: I38d000b3bd8a4c99389c40a87ee0699efb6e9049
This commit is contained in:
Jeff Sharkey
2013-07-11 11:18:53 -07:00
parent 682fa4bd0b
commit f20d6b326f

View File

@@ -639,6 +639,7 @@ public class NetworkStatsHistory implements Parcelable {
@Deprecated @Deprecated
public static long[] readFullLongArray(DataInputStream in) throws IOException { public static long[] readFullLongArray(DataInputStream in) throws IOException {
final int size = in.readInt(); final int size = in.readInt();
if (size < 0) throw new ProtocolException("negative array size");
final long[] values = new long[size]; final long[] values = new long[size];
for (int i = 0; i < values.length; i++) { for (int i = 0; i < values.length; i++) {
values[i] = in.readLong(); values[i] = in.readLong();
@@ -680,6 +681,7 @@ public class NetworkStatsHistory implements Parcelable {
public static long[] readVarLongArray(DataInputStream in) throws IOException { public static long[] readVarLongArray(DataInputStream in) throws IOException {
final int size = in.readInt(); final int size = in.readInt();
if (size == -1) return null; if (size == -1) return null;
if (size < 0) throw new ProtocolException("negative array size");
final long[] values = new long[size]; final long[] values = new long[size];
for (int i = 0; i < values.length; i++) { for (int i = 0; i < values.length; i++) {
values[i] = readVarLong(in); values[i] = readVarLong(in);