On Thu, 20 May 2021 16:10:11 GMT, Roger Riggs <rri...@openjdk.org> wrote:

>> JEP 415: Context-specific Deserialization Filters extends the 
>> deserialization filtering mechanisms with more flexible and customizable 
>> protections against malicious deserialization.  See JEP 415: 
>> https://openjdk.java.net/jeps/415.
>> The `java.io.ObjectInputFilter` and `java.io.ObjectInputStream` classes are 
>> extended with additional
>> configuration mechanisms and filter utilities.
>> 
>> javadoc for `ObjectInputFilter`, `ObjectInputFilter.Config`, and 
>> `ObjectInputStream`:
>>     
>> http://cr.openjdk.java.net/~rriggs/filter-factory/java.base/java/io/ObjectInputFilter.html
>
> Roger Riggs has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Simplify factory interface to BinaryOperator<ObjectInputFilter> and cleanup 
> the example

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

> 195:  * }
> 196:  * }</pre>
> 197:  * <h2>Using the Filter Factory</h2>

Should this be rather a subsection of the example above? Otherwise it gives the 
impression that the `doWithSerialFilter` method is provided or invoked by the 
JDK.

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

> 261:     /**
> 262:      * Returns a filter, that when applied to this filter that is 
> checking a class, maps
> 263:      * {@code Status.UNDECIDED} to {@code Status.REJECTED}, otherwise 
> returns the status of the other filter.

Which `other filter` is that? Shouldn't that be `..., otherwise returns the 
status of this filter.`

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

> 263:      * {@code Status.UNDECIDED} to {@code Status.REJECTED}, otherwise 
> returns the status of the other filter.
> 264:      * Object serialization accepts a class if the filter returns {@code 
> UNDECIDED}.
> 265:      * Appending a filter to reject undecided results for classes that 
> have not been

Could this be rephrased? I am not sure what "Appending" means in this context: 
more specifically appending to what? Maybe there's a way to  describe that in 
terms of "Mapping" rather than "Appending"?

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

> 362:     /**
> 363:      * A utility class to set and get the JVM-wide deserialization 
> filter factory,
> 364:      * the static JVM-wide filter, or to create a filter from a pattern 
> string.

FWIW: In other APIs we talk of `system-wide` rather than `JVM-wide`.

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

> 369:      * When each {@link ObjectInputStream#ObjectInputStream() 
> ObjectInputStream}
> 370:      * is created the {@linkplain Config#getSerialFilterFactory() filter 
> factory}
> 371:      * is invoked to determine the initial filter for the stream. A 
> stream-specific filter can be set with

Maybe the concept of system-wide filter should be introduced first, then you 
could say that the factory is invoked with `null` as first parameter and the 
system-wide filter as second parameter when the `ObjectInputStream` is created. 
Then the next paragraph could expand on what happens when 
`setObjectInputFilter` is called.

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

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

Reply via email to