================================================== CVE-2026-49844 VARIANT analysis | log4j-api: 2.26.1-fixed-2.26.x (alternate data paths into MapMessageJsonFormatter) ================================================== --- A. nested java.util.Map value (formatMap -> formatNumber) --- [nested-map] value=NaN JSON output: {"data":{"v":"NaN"}} >> non-finite value is QUOTED (valid JSON string) >> strict JSON parse OK (valid RFC 8259 JSON) [nested-map] value=Infinity JSON output: {"data":{"v":"Infinity"}} >> non-finite value is QUOTED (valid JSON string) >> strict JSON parse OK (valid RFC 8259 JSON) [nested-map] value=-Infinity JSON output: {"data":{"v":"-Infinity"}} >> non-finite value is QUOTED (valid JSON string) >> strict JSON parse OK (valid RFC 8259 JSON) --- B. java.util.List value (formatList -> formatNumber) --- [list] value=NaN JSON output: {"items":["NaN"]} >> non-finite value is QUOTED (valid JSON string) >> strict JSON parse OK (valid RFC 8259 JSON) [list] value=Infinity JSON output: {"items":["Infinity"]} >> non-finite value is QUOTED (valid JSON string) >> strict JSON parse OK (valid RFC 8259 JSON) [list] value=-Infinity JSON output: {"items":["-Infinity"]} >> non-finite value is QUOTED (valid JSON string) >> strict JSON parse OK (valid RFC 8259 JSON) --- C. Object[] value (formatObjectArray -> formatNumber) --- [object-array] value=NaN JSON output: {"arr":["NaN"]} >> non-finite value is QUOTED (valid JSON string) >> strict JSON parse OK (valid RFC 8259 JSON) [object-array] value=Infinity JSON output: {"arr":["Infinity"]} >> non-finite value is QUOTED (valid JSON string) >> strict JSON parse OK (valid RFC 8259 JSON) [object-array] value=-Infinity JSON output: {"arr":["-Infinity"]} >> non-finite value is QUOTED (valid JSON string) >> strict JSON parse OK (valid RFC 8259 JSON) --- D. non-List Collection (Set) value (formatCollection -> formatNumber) --- [set-collection] value=NaN JSON output: {"set":["NaN"]} >> non-finite value is QUOTED (valid JSON string) >> strict JSON parse OK (valid RFC 8259 JSON) [set-collection] value=Infinity JSON output: {"set":["Infinity"]} >> non-finite value is QUOTED (valid JSON string) >> strict JSON parse OK (valid RFC 8259 JSON) [set-collection] value=-Infinity JSON output: {"set":["-Infinity"]} >> non-finite value is QUOTED (valid JSON string) >> strict JSON parse OK (valid RFC 8259 JSON) [deque-collection] value=NaN JSON output: {"deque":["NaN"]} >> non-finite value is QUOTED (valid JSON string) >> strict JSON parse OK (valid RFC 8259 JSON) --- E. custom Number subclass (formatNumber else-branch) --- [custom-number] value=NaN JSON output: {"custom":"NaN"} >> non-finite value is QUOTED (valid JSON string) >> strict JSON parse OK (valid RFC 8259 JSON) [custom-number] value=Infinity JSON output: {"custom":"Infinity"} >> non-finite value is QUOTED (valid JSON string) >> strict JSON parse OK (valid RFC 8259 JSON) [custom-number] value=-Infinity JSON output: {"custom":"-Infinity"} >> non-finite value is QUOTED (valid JSON string) >> strict JSON parse OK (valid RFC 8259 JSON) --- F. BigInteger overflow -> Infinity (formatNumber else-branch) --- (sanity) huge.doubleValue() = Infinity (expect Infinity; isFinite=false) [bigint-overflow] value=Infinity JSON output: {"huge":"Infinity"} >> non-finite value is QUOTED (valid JSON string) >> strict JSON parse OK (valid RFC 8259 JSON) --- G. StringBuilderFormattable emitting bare NaN (control: always quoted) --- [formattable-nan] value=NaN JSON output: {"formattable":"NaN"} >> non-finite value is QUOTED (valid JSON string) >> strict JSON parse OK (valid RFC 8259 JSON) ================================================== VARIANT SUMMARY (2.26.1-fixed-2.26.x) total cases tested : 18 bare NaN/Infinity tokens : 0 quoted NaN/Infinity tokens: 18 JSON parse failures : 0 ================================================== VERDICT|2.26.1-fixed-2.26.x|FIXED|bare=0|quoted=18|parseFail=0