Skip to content
Permalink
Browse files Browse the repository at this point in the history
Merge pull request from GHSA-mrq4-7ch7-2465
Properly escape smarty output for twig
  • Loading branch information
PierreRambaud committed Jan 26, 2022
2 parents ed8eb7c + d2807b0 commit d02b469
Showing 1 changed file with 18 additions and 19 deletions.
37 changes: 18 additions & 19 deletions src/PrestaShopBundle/Twig/LayoutExtension.php
Expand Up @@ -218,26 +218,25 @@ public function getLegacyLayout(
throw new Exception('PrestaShopBundle\Twig\LayoutExtension cannot find the {$content} string in legacy layout template', 1);
}

$content = str_replace(
[
'{$content}',
'var currentIndex = \'index.php\';',
'</head>',
'</body>',
],
[
'{% block content_header %}{% endblock %}
{% block content %}{% endblock %}
{% block content_footer %}{% endblock %}
{% block sidebar_right %}{% endblock %}',
'var currentIndex = \'' . $this->context->getAdminLink($controllerName) . '\';',
'{% block stylesheets %}{% endblock %}{% block extra_stylesheets %}{% endblock %}</head>',
'{% block javascripts %}{% endblock %}{% block extra_javascripts %}{% endblock %}{% block translate_javascripts %}{% endblock %}</body>',
],
$layout
);
$explodedLayout = explode('{$content}', $layout);
$header = explode('</head>', $explodedLayout[0]);
$footer = explode('</body>', $explodedLayout[1]);

return $this->escapeSmarty(str_replace('var currentIndex = \'index.php\';', 'var currentIndex = \'' . $this->context->getAdminLink($controllerName) . '\';', $header[0]))
. '{% block stylesheets %}{% endblock %}{% block extra_stylesheets %}{% endblock %}</head>'
. $this->escapeSmarty($header[1])
. '{% block content_header %}{% endblock %}'
. '{% block content %}{% endblock %}'
. '{% block content_footer %}{% endblock %}'
. '{% block sidebar_right %}{% endblock %}'
. $this->escapeSmarty($footer[0])
. '{% block javascripts %}{% endblock %}{% block extra_javascripts %}{% endblock %}{% block translate_javascripts %}{% endblock %}</body>'
. $this->escapeSmarty($footer[1]);
}

return $content;
private function escapeSmarty(string $template): string
{
return '{{ \'' . addslashes($template) . '\' | raw }}';
}

/**
Expand Down

0 comments on commit d02b469

Please sign in to comment.