[ 
https://issues.apache.org/jira/browse/LUCENE-6920?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Uwe Schindler updated LUCENE-6920:
----------------------------------
    Attachment: LUCENE-6920.patch

Patch. All tests pass.

> Simplify callable function checks in Expression module
> ------------------------------------------------------
>
>                 Key: LUCENE-6920
>                 URL: https://issues.apache.org/jira/browse/LUCENE-6920
>             Project: Lucene - Core
>          Issue Type: Improvement
>          Components: modules/expressions
>            Reporter: Uwe Schindler
>            Assignee: Uwe Schindler
>             Fix For: Trunk, 5.5
>
>         Attachments: LUCENE-6920.patch
>
>
> The expressions module allows to specify custom functions. It does some 
> checks to ensure that the compiled Expression works correctly and does not 
> produce linkage errors. It also checks parameters and return type to  be 
> doubles.
> There are two problems with the current approach:
> - the check gets classloaders of the method's declaring class. This fails if 
> a security manager forbids access to bootstrap classes (e.g., java.lang.Math)
> - the code only checks if method or declaring class are public, but not if it 
> is really reachable. This may not be the case in Java 9 (different module 
> without exports,...)
> This issue will use MethodHandles to do the accessibility checks (it uses 
> MethodHandles.publicLookup() to resolve the given reflected method). If that 
> fails, our compiled code cannot acess it. If module system prevents access, 
> this is also checked.
> To fix the issue with classloaders, it uses a trick: It calls Class.forName() 
> with the classloader we use to compile our expression. If that does not 
> return the same class as the declared method, it also fails compilation. This 
> prevents NoClassDefFoundException on executing the expression.
> All tests pass.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to