This is an automated email from the ASF dual-hosted git repository.

ashishvijaywargiya pushed a commit to branch release24.09
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git


The following commit(s) were added to refs/heads/release24.09 by this push:
     new 37f19aadc9 Improved: escape link parameter values in 
MacroScreenRenderer.renderLink (#1711) (#1715)
37f19aadc9 is described below

commit 37f19aadc9c08a689b10dcc2657677c629d1d590
Author: Ashish Vijaywargiya <[email protected]>
AuthorDate: Mon Aug 24 15:38:55 2026 +0530

    Improved: escape link parameter values in MacroScreenRenderer.renderLink 
(#1711) (#1715)
    
    - Parameter names and values were appended to the generated FTL macro
    call without escaping. Added escapeFtlSingleQuoted() to escape these
    values before they are embedded in the macro string, consistent with
    escaping already used elsewhere in this class.
    
    - Corrected existing escaping in the other executeMacro overload, which
    escaped a lone dollar sign with a backslash - not a valid FTL string
    escape, and one that failed to parse for any value containing a plain
    "$". Escaping the following brace instead is sufficient and valid
    syntax.
    
    Cherry-picked from trunk commit
    9d096f9af85db998f028643a0b169fa6b84349e4.
    
    Thank you Krishna Uprit for your contribution.
    
    Co-authored-by: Krishna Uprit <[email protected]>
    Co-authored-by: Krishnauprit18 <[email protected]>
---
 .../ofbiz/widget/renderer/macro/MacroScreenRenderer.java       | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git 
a/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroScreenRenderer.java
 
b/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroScreenRenderer.java
index 15d0d0ee44..98a93862b4 100644
--- 
a/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroScreenRenderer.java
+++ 
b/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroScreenRenderer.java
@@ -125,7 +125,7 @@ public class MacroScreenRenderer implements 
ScreenStringRenderer {
                 Object value = parameter.getValue();
                 if (value instanceof String) {
                     sb.append('"');
-                    sb.append(((String) value).replace("\\", 
"\\\\").replace("\"", "\\\"").replace("$", "\\$"));
+                    sb.append(((String) value).replace("\\", 
"\\\\").replace("\"", "\\\"").replace("{", "\\{"));
                     sb.append('"');
                 } else {
                     sb.append(value);
@@ -136,6 +136,10 @@ public class MacroScreenRenderer implements 
ScreenStringRenderer {
         executeMacro(writer, sb.toString());
     }
 
+    private static String escapeFtlSingleQuoted(String value) {
+        return value == null ? "" : value.replace("\\", "\\\\").replace("'", 
"\\'").replace("{", "\\{");
+    }
+
     private Environment getEnvironment(Appendable writer) throws 
TemplateException, IOException {
         Environment environment = environments.get(writer);
         if (environment == null) {
@@ -298,10 +302,10 @@ public class MacroScreenRenderer implements 
ScreenStringRenderer {
                     parameters.append(",");
                 }
                 parameters.append("{'name':'");
-                parameters.append(parameter.getKey());
+                parameters.append(escapeFtlSingleQuoted(parameter.getKey()));
                 parameters.append("'");
                 parameters.append(",'value':'");
-                parameters.append(parameter.getValue());
+                parameters.append(escapeFtlSingleQuoted(parameter.getValue()));
                 parameters.append("'}");
             }
             parameters.append("]");

Reply via email to