提交 9242d268 编写于 作者: B bchristi

8224541: Better mapping of serial ENUMs

Reviewed-by: mschoene, rhalade, robm, rriggs, smarks, andrew
上级 0142bf27
/* /*
* Copyright (c) 1996, 2018, 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
...@@ -1798,6 +1798,8 @@ public class ObjectInputStream ...@@ -1798,6 +1798,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);
......
/* /*
* 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
...@@ -863,6 +863,17 @@ public class ObjectStreamClass implements Serializable { ...@@ -863,6 +863,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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册