On Mon, 22 Nov 2021 19:57:25 GMT, Roger Riggs <rri...@openjdk.org> wrote:

> The effects of an invalid `jdk.serialFilter` property are not completely 
> documented. If the value of the system property jdk.serialFilter is invalid, 
> deserialization should not be possible and it should be clear in the 
> specification. 
> 
> Specify an implementation specific exception is thrown in the case where 
> deserialization is invoked after reporting the invalid jdk.serialFilter.

src/java.base/share/classes/java/io/ObjectInputFilter.java line 529:

> 527:      * if the filter string is invalid, an {@link 
> ExceptionInInitializerError} is thrown
> 528:      * and the initialization fails; subsequent attempts to use the 
> configuration or
> 529:      * serialization will fail with an implementation specific exception.

I'm confused about exactly what happens after `ExceptionInInitializerError`.

> Subsequent attempts to use the configuration or serialization will fail....

Which configuration? I thought OIF.Config is a utility class and thus has no 
instances. If its class initialization fails, then other code cannot use 
`Config.setSerialFilter` to set a global filter (which might be desirable, but 
throws NCDFE instead of `IllegalStateException`) and other code can't use 
`Config.createFilter` to create individual filters. Is that right? It seems 
like there ought to be a better arrangement than to have the system come up in 
some dysfunctional way, where any subsequent reference to `OIF.Config` results 
in NCDFE.

And surely this affects deserialization, not serialization?

-------------

PR: https://git.openjdk.java.net/jdk/pull/6508

Reply via email to