8224541: Better mapping of serial ENUMs
Reviewed-by: mschoene, rhalade, robm, rriggs, smarks
This commit is contained in:
parent
e4f4e8eda1
commit
d7136cd430
@ -1858,6 +1858,8 @@ public class ObjectInputStream
|
|||||||
break;
|
break;
|
||||||
case TC_REFERENCE:
|
case TC_REFERENCE:
|
||||||
descriptor = (ObjectStreamClass) readHandle(unshared);
|
descriptor = (ObjectStreamClass) readHandle(unshared);
|
||||||
|
// Should only reference initialized class descriptors
|
||||||
|
descriptor.checkInitialized();
|
||||||
break;
|
break;
|
||||||
case TC_PROXYCLASSDESC:
|
case TC_PROXYCLASSDESC:
|
||||||
descriptor = readProxyDesc(unshared);
|
descriptor = readProxyDesc(unshared);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1996, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -885,6 +885,17 @@ public class ObjectStreamClass implements Serializable {
|
|||||||
throw new InternalError("Unexpected call when not initialized");
|
throw new InternalError("Unexpected call when not initialized");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Throws InvalidClassException if not initialized.
|
||||||
|
* To be called in cases where an uninitialized class descriptor indicates
|
||||||
|
* a problem in the serialization stream.
|
||||||
|
*/
|
||||||
|
final void checkInitialized() throws InvalidClassException {
|
||||||
|
if (!initialized) {
|
||||||
|
throw new InvalidClassException("Class descriptor should be initialized");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Throws an InvalidClassException if object instances referencing this
|
* Throws an InvalidClassException if object instances referencing this
|
||||||
* class descriptor should not be allowed to deserialize. This method does
|
* class descriptor should not be allowed to deserialize. This method does
|
||||||
|
Loading…
x
Reference in New Issue
Block a user