mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-19 18:44:38 +02:00
8076392: Improve IIOPInputStream consistency
Reviewed-by: rriggs, coffeys, skoivu, ahgross
This commit is contained in:
parent
a3837043b0
commit
6837e39407
1 changed files with 26 additions and 0 deletions
|
@ -567,6 +567,11 @@ public class IIOPInputStream
|
||||||
// XXX I18N, logging needed.
|
// XXX I18N, logging needed.
|
||||||
throw new NotActiveException("defaultReadObjectDelegate");
|
throw new NotActiveException("defaultReadObjectDelegate");
|
||||||
|
|
||||||
|
if (!currentClassDesc.forClass().isAssignableFrom(
|
||||||
|
currentObject.getClass())) {
|
||||||
|
throw new IOException("Object Type mismatch");
|
||||||
|
}
|
||||||
|
|
||||||
// The array will be null unless fields were retrieved
|
// The array will be null unless fields were retrieved
|
||||||
// remotely because of a serializable version difference.
|
// remotely because of a serializable version difference.
|
||||||
// Bug fix for 4365188. See the definition of
|
// Bug fix for 4365188. See the definition of
|
||||||
|
@ -2257,6 +2262,27 @@ public class IIOPInputStream
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Class fieldCl = fields[i].getClazz();
|
Class fieldCl = fields[i].getClazz();
|
||||||
|
if ((objectValue != null)
|
||||||
|
&& (!fieldCl.isAssignableFrom(
|
||||||
|
objectValue.getClass()))) {
|
||||||
|
throw new IllegalArgumentException("Field mismatch");
|
||||||
|
}
|
||||||
|
Field classField = null;
|
||||||
|
try {
|
||||||
|
classField = cl.getDeclaredField(fields[i].getName());
|
||||||
|
} catch (NoSuchFieldException nsfEx) {
|
||||||
|
throw new IllegalArgumentException(nsfEx);
|
||||||
|
} catch (SecurityException secEx) {
|
||||||
|
throw new IllegalArgumentException(secEx.getCause());
|
||||||
|
}
|
||||||
|
Class<?> declaredFieldClass = classField.getType();
|
||||||
|
|
||||||
|
// check input field type is a declared field type
|
||||||
|
// input field is a subclass of the declared field
|
||||||
|
if (!declaredFieldClass.isAssignableFrom(fieldCl)) {
|
||||||
|
throw new IllegalArgumentException(
|
||||||
|
"Field Type mismatch");
|
||||||
|
}
|
||||||
if (objectValue != null && !fieldCl.isInstance(objectValue)) {
|
if (objectValue != null && !fieldCl.isInstance(objectValue)) {
|
||||||
throw new IllegalArgumentException();
|
throw new IllegalArgumentException();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue