The vulnerability is a Denial of Service caused by an uncaught RangeError in the fast-xml-parser library. The root cause is the improper handling of numeric XML entities. The analysis of the provided patch (commit 4e387f61c4a5cef792f6a2f42467013290bf95dc) and the vulnerability description confirms this.
In src/xmlparser/OrderedObjParser.js, the configuration for decimal and hexadecimal numeric entities used anonymous arrow functions to perform the conversion. These functions parsed the numeric string and directly called String.fromCodePoint().
The vulnerability description explicitly states that the function replaceEntitiesValue() is responsible for the entity replacement and lacks a try-catch block. When this function processes a malicious XML with an entity code point outside the valid Unicode range (e.g., �), the call to String.fromCodePoint() throws a RangeError.
Because this exception is not caught within replaceEntitiesValue or its callers within the library, it propagates up the stack and crashes the Node.js application. The patch rectifies this by introducing a new helper function, fromCodePoint, which validates that the parsed code point is within the legal range (0 to 0x10FFFF) before calling String.fromCodePoint(). If the value is out of range, it returns the original entity string, preventing the crash. The main user-facing function that triggers this entire process is XMLParser.parse().