[ 
https://issues.apache.org/jira/browse/GEODE-9980?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17489096#comment-17489096
 ] 

ASF subversion and git services commented on GEODE-9980:
--------------------------------------------------------

Commit ce57e9fd2b8b644cadc469209e12e4fbd281e0d9 in geode's branch 
refs/heads/develop from Kirk Lund
[ https://gitbox.apache.org/repos/asf?p=geode.git;h=ce57e9f ]

GEODE-9980: Improve error handling of serial filters (#7299)

Improves the error handling of serial filter configuration and 
filtering. The API throws a runtime exception wrapping any thrown 
exceptions.

When geode.enableGlobalSerialFilter is FALSE:
* Startup succeeds without throwing any exceptions even if an older
  version of Java throws "java.lang.ClassNotFoundException
  sun.misc.ObjectInputFilter".

When geode.enableGlobalSerialFilter is TRUE:
* Startup fails by throwing an exception when configuration of serial
  filter fails for any reason.

Renames ObjectInputFilter to avoid confusion with the Java interface of
the same name.

Fixes a bug found in ReflectiveFacadeGlobalSerialFilterTest which
resulted in configuring a non-mocked process-wide serial filter that
polluted the JVM for all later tests.

Fixes other minor details in LocatorLauncher, InternalDataSerializer
and various related tests.

> Startup of Locator or Server should fail fast if 
> geode.enableGlobalSerialFilter is enabled but fails configuration
> ------------------------------------------------------------------------------------------------------------------
>
>                 Key: GEODE-9980
>                 URL: https://issues.apache.org/jira/browse/GEODE-9980
>             Project: Geode
>          Issue Type: Bug
>          Components: serialization
>    Affects Versions: 1.15.0
>            Reporter: Kirk Lund
>            Assignee: Kirk Lund
>            Priority: Major
>              Labels: GeodeOperationAPI, blocks-1.15.0​, pull-request-available
>
> The following error conditions need better handling which includes handling 
> of all errors consistently and cause the startup of a Locator or Server to 
> fail if it's unable to honor the setting of 
> {{-Dgeode.enableGlobalSerialFilter=true}} for any reason. Currently, if 
> {{-Dgeode.enableGlobalSerialFilter=true}} is specified but Geode is unable to 
> create a global serial filter, then it will will log a warning and continue 
> running. A user may easily miss that log statement and believe that the JVM 
> is running with a properly configured serialization filter.
> 1) The user is trying to secure the JVM very thoroughly and accidentally 
> specifies both {{-Djdk.serialFilter}} and 
> {{-Dgeode.enableGlobalSerialFilter}}. 
> 2) The user runs some non-Geode code in the same JVM that invokes 
> {{ObjectInputFilter.Config.setFilter(...)}} directly.
> 3) The user is using a version of Java 8 prior to 8u121 (the release that 
> first added {{sun.misc.ObjectInputFilter}}) and specifies 
> {{-Dgeode.enableGlobalSerialFilter=true}}. Also, the same behavior occurs if 
> they do NOT specify enabling that property.
> 4) {{LocatorLauncher}} or {{ServerLauncher}} is started in a JVM that has 
> already created at least one {{ObjectInputStream}} which will cause 
> {{ObjectInputFilter.Config.setFilter(...)}} to fail.
> 5) {{LocatorLauncher}} or {{ServerLauncher}} is started in a Java 8 JVM that 
> is not based on OpenJDK (ie {{sun.misc.ObjectInputFilter}} does not exist).
> 6) {{LocatorLauncher}} or {{ServerLauncher}} is started in an unforeseen 
> environment that causes invocation of 
> {{ObjectInputFilter.Config.setFilter(...)}} via Java Reflection to throw 
> {{IllegalAccessException}}.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to