--- a/jdk/src/java.logging/share/classes/java/util/logging/Level.java Thu Jul 28 10:13:12 2016 +0100
+++ b/jdk/src/java.logging/share/classes/java/util/logging/Level.java Tue Aug 09 11:41:47 2016 +0100
@@ -692,11 +692,14 @@
Level levelObject = ref.get();
if (levelObject == null) continue;
Level other = ref.mirroredLevel;
+ Class<? extends Level> type = levelObject.getClass();
if (l.value == other.value &&
(l.resourceBundleName == other.resourceBundleName ||
(l.resourceBundleName != null &&
l.resourceBundleName.equals(other.resourceBundleName)))) {
- return Optional.of(levelObject);
+ if (type == l.getClass()) {
+ return Optional.of(levelObject);
+ }
}
}
}
--- a/jdk/src/java.logging/share/classes/java/util/logging/LogRecord.java Thu Jul 28 10:13:12 2016 +0100
+++ b/jdk/src/java.logging/share/classes/java/util/logging/LogRecord.java Tue Aug 09 11:41:47 2016 +0100
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -619,13 +619,21 @@
throw new IOException("LogRecord: bad version: " + major + "." + minor);
}
int len = in.readInt();
- if (len == -1) {
+ if (len < -1) {
+ throw new NegativeArraySizeException();
+ } else if (len == -1) {
parameters = null;
- } else {
+ } else if (len < 255) {
parameters = new Object[len];
for (int i = 0; i < parameters.length; i++) {
parameters[i] = in.readObject();
}
+ } else {
+ List<Object> params = new ArrayList<>(Math.min(len, 1024));
+ for (int i = 0; i < len; i++) {
+ params.add(in.readObject());
+ }
+ parameters = params.toArray(new Object[params.size()]);
}
// If necessary, try to regenerate the resource bundle.
if (resourceBundleName != null) {