You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@nifi.apache.org by "Mark Payne (JIRA)" <ji...@apache.org> on 2018/03/28 16:46:00 UTC

[jira] [Updated] (NIFI-5026) Expression Language Query.prepare function can sometimes ignore escape sequence

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

Mark Payne updated NIFI-5026:
-----------------------------
    Fix Version/s: 1.7.0
           Status: Patch Available  (was: Open)

> Expression Language Query.prepare function can sometimes ignore escape sequence
> -------------------------------------------------------------------------------
>
>                 Key: NIFI-5026
>                 URL: https://issues.apache.org/jira/browse/NIFI-5026
>             Project: Apache NiFi
>          Issue Type: Bug
>          Components: Core Framework
>            Reporter: Mark Payne
>            Assignee: Mark Payne
>            Priority: Major
>             Fix For: 1.7.0
>
>
> As reported on the [dev@n.a.o|mailto:dev@n.a.o] mailing list:
>  
> Hi,
> It looks like I have stumbled upon a bug in substitution of evaluated expressions.
> A test case:
> {code:java}
> String result = org.apache.nifi.attribute.expression.language.Query.prepare("${foo}$${foo}").evaluateExpressions(Collections.singletonMap("foo", "bar"), null);{code}
> Expected result:
> {code:java}
> bar${foo}{code}
> Observed result:
> {code:java}
> barbar{code}
> The issue exists in 1.5.0 and, as far as I can tell, in the master branch.The cause is quite simple: Query.prepare(...) splits the input string into pieces to be evaluated and substituted or to be copied literally, but it doesn't keep track of which is which.That couldn't possibly work. If a piece to be copied literally happens to be equal to one of the pieces to be substituted, the things go wrong, as the test case demonstrates.
> Regards,Sergei.
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)