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

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

commit f9281d50d761985df6e207983433b093d5b701c7
Author: Jacopo Cappellato <[email protected]>
AuthorDate: Thu Oct 1 08:04:41 2026 +0200

    Handle IllegalArgumentException in Debug formatter
    
    It is good practice to never allow externally-controlled strings to be 
interpreted as format templates without validation. In a logging helper, safest 
is to attempt formatting only when appropriate and gracefully fall back to 
plain message output if the template is invalid.
    
    This fix doesn't break existing intended functionality: keep support for 
existing formatted log calls, but wrap formatter.format(msg, params) in a 
try/catch for IllegalArgumentException (covers IllegalFormatException and 
related formatter errors). On exception, fall back to logging the raw msg plus 
appended parameter values (non-format interpretation). This prevents 
format-string injection from causing exceptions while preserving normal 
formatting behavior for valid constant templates.
    
    Co-authored-by: Copilot Autofix
---
 .../base/src/main/java/org/apache/ofbiz/base/util/Debug.java | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/framework/base/src/main/java/org/apache/ofbiz/base/util/Debug.java 
b/framework/base/src/main/java/org/apache/ofbiz/base/util/Debug.java
index 129047a467..d7d927bb93 100644
--- a/framework/base/src/main/java/org/apache/ofbiz/base/util/Debug.java
+++ b/framework/base/src/main/java/org/apache/ofbiz/base/util/Debug.java
@@ -18,6 +18,7 @@
  
*******************************************************************************/
 package org.apache.ofbiz.base.util;
 
+import java.util.Arrays;
 import java.util.Formatter;
 import java.util.HashMap;
 import java.util.Locale;
@@ -110,9 +111,14 @@ public final class Debug {
             if (msg != null && params.length > 0) {
                 StringBuilder sb = new StringBuilder();
                 Formatter formatter = new Formatter(sb);
-                formatter.format(msg, params);
-                msg = sb.toString();
-                formatter.close();
+                try {
+                    formatter.format(msg, params);
+                    msg = sb.toString();
+                } catch (IllegalArgumentException e) {
+                    msg = msg + " " + Arrays.toString(params);
+                } finally {
+                    formatter.close();
+                }
             }
 
             // log

Reply via email to