Mercurial > p > roundup > code
view share/roundup/templates/devel/html/help.html @ 8356:63390dcfcfe9
bug: fix template use of structure with untrusted data
Looks like an xSS bug with an early version of the template that was
fixed in the code but never in the deployed tracker. It has been a
while since this particular construct has been in the classic template
which is the base for the tracker.
This has been fixed on the deployed tracker as well.
reported by 4bug of ChaMd5 Security Team H1 Group
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Tue, 08 Jul 2025 10:23:09 -0400 |
| parents | 28aa76443f58 |
| children |
line wrap: on
line source
<tal:block metal:define-macro="frame"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html tal:define="what python:request.form.getvalue('property', request.classname); form request/form/form/value; field request/form/property/value"> <head> <meta http-equiv="Content-Type" tal:attributes="content string:text/html;; charset=${request/client/charset}" /> <title i18n:translate=""> <tal:x i18n:name="what" tal:content="what" i18n:translate="" /> help - <span i18n:name="tracker" tal:replace="config/TRACKER_NAME" /> </title> <script language="Javascript" type="text/javascript" tal:content="string: // this is the name of the field in the original form that we're working on form = window.opener.document.${form}; field = '${field}';"> </script> <link rel="stylesheet" type="text/css" href="@@file/help.css" /> <script src="@@file/help_controls.js" type="text/javascript"></script> <metal:x define-slot="more-javascript" /> </head> <body onload="resetList();"> <div class="header"> <h1>Roundup Issue Tracker: Help - <tal:block tal:content="what">item</tal:block></h1> </div> <div class="content"> <tal:block metal:define-slot="content">Page content goes here</tal:block> </div> <!-- content --> <div class="footer"> <tal:block metal:define-slot="footer"></tal:block> </div> <!-- footer --> </body> </html> </tal:block> <!-- legend for helper search results --> <thead> <tr metal:define-macro="legend"> <th tal:repeat="prop props" tal:content="prop" i18n:translate=""></th> </tr> </thead> <table width="100%" metal:define-macro="batch_navi" tal:define="prev batch/previous; next batch/next;" tal:condition="python:prev or next"> <tr class="navigation"> <th width="30%"> <a tal:condition="prev" tal:attributes="href python:request.indexargs_url(request.classname, {'@template':'help-list', 'property': property, 'properties': request.form['properties'].value, 'form': request.form['form'].value, '@startwith':prev.first, '@pagesize':prev.size})" i18n:translate="" ><< previous</a> </th> <th i18n:translate="" width="40%"><span tal:replace="batch/start" i18n:name="start" />..<span tal:replace="python: batch.start + batch.length -1" i18n:name="end" /> out of <span tal:replace="batch/sequence_length" i18n:name="total" /> </th> <th width="30%"> <a tal:condition="next" tal:attributes="href python:request.indexargs_url(request.classname, {'@template':'help-list', 'property': property, 'properties': request.form['properties'].value, 'form': request.form['form'].value, '@startwith':next.first, '@pagesize':next.size})" i18n:translate="" >next >></a> </th> </tr> </table>
