Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Not A Problem
-
2.3.28
-
None
-
None
Description
Using FMPP with FreeMarker to render a document. The main document resembles:
<#assign updated = .now> <!doctype html> <html lang="en"> <head> <meta charset="utf-8"/> </head> <body> <main> <article> <#include "includes/html/body.html" parse=false> </article> </main> </body> </html>
The file includes/html/body.html contains:
<div class="code"> <pre><code>SCRIPT_DIR="\ $(\ cd "$(dirname "${BASH_SRC_DIR[0]}")" \ >/dev/null 2>&1 \ && pwd\ )" SCRIPT_NAME=$(basename $0)</code></pre> </div>
Note the &𝗮𝗺𝗽; &𝗮𝗺𝗽;. When the main document is parsed by FreeMarker, the resulting document contains:
<div class="code"><pre><code>SCRIPT_DIR="\ $(\ cd "$(dirname "${BASH_SRC_DIR[0]}")" \ >/dev/null 2>&1 \ && pwd\ )" SCRIPT_NAME=$(basename $0)</code></pre></div>
Note the &𝗮𝗺𝗽; &, which is invalid HTML. The following line from the main document does not appear to prevent the engine from meddling with the contents, despite parse=false being set:
<#include "includes/html/body.html" parse=false>
The expected result, of course, is &𝗮𝗺𝗽;&𝗮𝗺𝗽; as per:
&& pwd\
A larger concern is that FreeMarker produced invalid HTML that wasn't caught in a unit test.