]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 207044 - Filter more template directives. None of these are security bugs, but...
authorgerv%gerv.net <>
Sun, 7 Sep 2003 02:23:09 +0000 (02:23 +0000)
committergerv%gerv.net <>
Sun, 7 Sep 2003 02:23:09 +0000 (02:23 +0000)
37 files changed:
Bugzilla/Template.pm
checksetup.pl
t/004template.t
t/008filter.t
template/en/default/account/prefs/account.html.tmpl
template/en/default/account/prefs/email.html.tmpl
template/en/default/admin/flag-type/confirm-delete.html.tmpl
template/en/default/admin/flag-type/edit.html.tmpl
template/en/default/admin/flag-type/list.html.tmpl
template/en/default/attachment/list.html.tmpl
template/en/default/bug/activity/table.html.tmpl
template/en/default/bug/create/create-guided.html.tmpl
template/en/default/bug/create/create.html.tmpl
template/en/default/bug/dependency-tree.html.tmpl
template/en/default/bug/process/bugmail.html.tmpl
template/en/default/bug/process/verify-new-product.html.tmpl
template/en/default/bug/show-multiple.html.tmpl
template/en/default/bug/votes/list-for-user.html.tmpl
template/en/default/filterexceptions.pl
template/en/default/global/code-error.html.tmpl
template/en/default/global/confirm-user-match.html.tmpl
template/en/default/global/messages.html.tmpl
template/en/default/global/select-menu.html.tmpl
template/en/default/global/useful-links.html.tmpl
template/en/default/global/user-error.html.tmpl
template/en/default/list/change-columns.html.tmpl
template/en/default/list/list.html.tmpl
template/en/default/reports/components.html.tmpl
template/en/default/reports/duplicates-simple.html.tmpl
template/en/default/reports/duplicates-table.html.tmpl
template/en/default/reports/report-table.csv.tmpl
template/en/default/reports/report-table.html.tmpl
template/en/default/reports/report.html.tmpl
template/en/default/search/form.html.tmpl
template/en/default/search/knob.html.tmpl
template/en/default/search/search-report-graph.html.tmpl
template/en/default/search/search-report-table.html.tmpl

index 2cb017d1764d79357c10bf1723277b741a83b4e5..06be9243cc93b477970db6b72f462ae147c4a958 100644 (file)
@@ -256,6 +256,11 @@ sub create {
                 $var =~ s/\@/\&#64;/g;
                 return $var;
             },
+            
+            # We force filtering of every variable in key security-critical
+            # places; we have a none filter for people to use when they 
+            # really, really don't want a variable to be changed.
+            none => sub { return $_[0]; } ,
         },
 
         PLUGIN_BASE => 'Bugzilla::Template::Plugin',
index b7cffb05d0f95d1cd7a4a0ded4df77fdb1035a97..4f7985d9aec24cce1444e33382ae1d4e71b07084 100755 (executable)
@@ -1078,6 +1078,7 @@ END
                 csv => sub { return $_; },
                 time => sub { return $_; },
                 obscure_email => sub { return $_; },
+                none => sub { return $_; } ,
                },
            }) || die ("Could not create Template Provider: "
                        . Template::Provider->error() . "\n");
index 7252414265d27eb3e2a5586c8fc1462c6f0a3283..78d58edd5f0bf8797a1209ef662506e14dcefba9 100644 (file)
@@ -99,6 +99,7 @@ foreach my $include_path (@include_paths) {
             csv       => sub { return $_ } ,
             time      => sub { return $_ } ,
             obscure_email => sub { return $_ } ,
+            none      => sub { return $_ } ,
         },
     }
     );
index 3bf7f3fd13ed2bf2b3e6e3f24a130ef7810f82b4..8b8b36d5cec7f6d389990a6d1e73dce167e1ea8f 100644 (file)
@@ -199,7 +199,7 @@ sub directive_ok {
     # Note: If a single directive prints two things, and only one is 
     # filtered, we may not catch that case.
     return 1 if $directive =~ /FILTER\ (html|csv|js|url_quote|css_class_quote|
-                                        quoteUrls|time|uri|xml|lower)/x;
+                                        quoteUrls|time|uri|xml|lower|none)/x;
 
     return 0;
 }
index 798bb8e40449ec579caf6f1f484894d8e9c16e16..70190048ab36df36004fb33e6883b649e2b0c48a 100644 (file)
@@ -74,7 +74,7 @@
         </tr>
         <tr>
           <th align="right">Change request expires:</th>
-          <td>[% login_change_date %]</td>
+          <td>[% login_change_date FILTER time %]</td>
         </tr>
       [% ELSE %]
         <tr>
@@ -83,7 +83,7 @@
         </tr>
         <tr>
           <th align="right">Completion date:</th>
-          <td>[% login_change_date %]</td>
+          <td>[% login_change_date FILTER time %]</td>
         </tr>
       [% END %]
     [% ELSE %]
index fa6295e7217d6ccd840ab878d96a3bef8c2a2571..24853a726dfc87e75de51fd92f2ff38e5a80d495 100644 (file)
@@ -57,7 +57,8 @@
     <tr>
       <th align="right">Users to watch:</th>
       <td>
-        <input size="35" name="watchedusers" value="[% watchedusers %]">
+        <input size="35" name="watchedusers" 
+               value="[% watchedusers FILTER html %]">
       </td>
     </tr>
   [% END %]
index 6bf1ca43f3739760c598d7377dbba3508c483437..ddd99d7caaa4403d0eb274da9c06f1046b22c26e 100644 (file)
@@ -29,7 +29,7 @@
 %]
 
 <p>
-   There are [% flag_count %] flags of type [% name %].
+   There are [% flag_count %] flags of type [% name FILTER html %].
    If you delete this type, those flags will also be deleted.  Note that
    instead of deleting the type you can
    <a href="editflagtypes.cgi?action=deactivate&amp;id=[% flag_type.id %]">deactivate it</a>,
index a56c3bb65c0e6af2c4ee53a6d8d51a776b70a4f0..58519466d6f9dff4e91c72f1444f8077e8f9df9c 100644 (file)
   <input type="hidden" name="id" value="[% type.id %]">
   <input type="hidden" name="target_type" value="[% type.target_type %]">
   [% FOREACH category = type.inclusions %]
-    <input type="hidden" name="inclusions" value="[% category %]">
+    <input type="hidden" name="inclusions" value="[% category FILTER html %]">
   [% END %]
   [% FOREACH category = type.exclusions %]
-    <input type="hidden" name="exclusions" value="[% category %]">
+    <input type="hidden" name="exclusions" value="[% category FILTER html %]">
   [% END %]
 
   <table id="form" cellspacing="0" cellpadding="4" border="0">
               <select name="product" onchange="selectProduct(this.form, 'product', 'component', '__Any__');">
                 <option value="">__Any__</option>
                 [% FOREACH item = products %]
-                  <option value="[% item %]" [% "selected" IF type.product.name == item %]>[% item %]</option>
+                  <option value="[% item FILTER html %]" 
+                          [% "selected" IF type.product.name == item %]>
+                          [% item FILTER html %]</option>
                 [% END %]
               </select><br>
               <select name="component">
                 <option value="">__Any__</option>
                 [% FOREACH item = components %]
-                  <option value="[% item %]" [% "selected" IF type.component.name == item %]>[% item %]</option>
+                  <option value="[% item FILTER html %]" 
+                          [% "selected" IF type.component.name == item %]>
+                          [% item FILTER html %]</option>
                 [% END %]
               </select><br>
               <input type="submit" name="categoryAction" value="Include">
     <tr>
       <th></th>
       <td>
-        <input type="submit" value="[% (last_action == "enter" || last_action == "copy") ? "Create" : "Save Changes" %]">
+        <input type="submit" value="        
+          [% IF (last_action == "enter" || last_action == "copy") %]Create 
+          [% ELSE %]Save Changes 
+          [% END %]">
       </td>
     </tr>
 
index 0e3306d27f1b0823b351247cbe9fc978d21446ae..80764d6135ccb4470d8ff797fb12483d53b47b8c 100644 (file)
@@ -92,7 +92,7 @@
 
     [% FOREACH type = types %]
 
-      <tr class="[% type.is_active ? "active" : "inactive" %]">
+      <tr class="[% IF type.is_active %]active[% ELSE %]inactive[% END %]">
         <td><a href="editflagtypes.cgi?action=edit&amp;id=[% type.id %]">[% type.name FILTER html %]</a></td>
         <td>[% type.description FILTER html %]</td>
         <td>
index 163071997e376c5d2d3c0db661564a9f017ffe73..1e3618093a7079d1c99311c6e3bf1a092e065d16 100644 (file)
           [% IF attachment.flags.size == 0 %]
             <i>none</i>
           [% ELSE %]
-            [% FOR flag = attachment.flags %]
+            [% FOREACH flag = attachment.flags %]
                 [% IF flag.setter %]
                   [% flag.setter.nick FILTER html %]:
                 [% END %]
-                [%+ flag.type.name %][% flag.status %]
+                [%+ flag.type.name FILTER html %][% flag.status %]
                 [%+ IF flag.status == "?" && flag.requestee %]
-                  ([% flag.requestee.nick %])
+                  ([% flag.requestee.nick FILTER html %])
                 [% END %]<br>
             [% END %]
           [% END %]
index ec005cc384960b27ec320af606c7e3a9274c8e0a..af6305b5dd7d2b1b12e8ad39ae6f94c9effaf5fd 100644 (file)
@@ -60,7 +60,7 @@
     [% FOREACH operation = operations %]
       <tr>
         <td rowspan="[% operation.changes.size %]" valign="top">
-          [% operation.who %]
+          [% operation.who FILTER html %]
         </td>
         <td rowspan="[% operation.changes.size %]" valign="top">
           [% operation.when FILTER time %]
index fb5828fe85a55b98540b4dc191a1db946d0cfc29..7e0220b856b0808df0bc9e1865c88d93c012867f 100644 (file)
@@ -224,7 +224,8 @@ function PutDescription() {
         The area where the problem occurs.
         To pick the right component, you could use the same one as
         similar [% terms.bugs %] you found in your search, or read the full list of
-        <a href="describecomponents.cgi?product=[% product %]">component
+        <a href="describecomponents.cgi?product=
+            [% product FILTER url_quote %]">component
         descriptions</a> if you need more help.
       </p>
 
index 14ce271802dfdadfb463b9d115e605ad4dc1d9c8..b15efffac122c8f4feb781f13262afc858baf4d3 100644 (file)
@@ -171,7 +171,8 @@ function set_assign_to() {
     <td colspan="2"></td>
   </tr>
 [% ELSE %]
-  <input type="hidden" name="bug_status" value="[% default.bug_status %]">
+  <input type="hidden" name="bug_status" 
+         value="[% default.bug_status FILTER html %]">
 [% END %]
 
   <tr>
index 194691e56438a17f84338863000fcfe0466ffb7d..16f68b394f8f4b08f46a2d4595840e73d7a6d208 100644 (file)
 [% PROCESS depthControlToolbar %]
 
 [%# Display the tree of bugs that this bug depends on. %]
-<h3>[% hide_resolved ? "Open $terms.bugs" : "$terms.Bugs" %]
- that <a href="show_bug.cgi?id=[% bugid %]">[% terms.bug %]&nbsp;[% bugid %]</a> depends on</h3>
+<h3>
+  [% IF hide_resolved %]
+    Open [% terms.bugs %]
+  [% ELSE %]
+    [% terms.Bugs %]
+  [% END %] 
+  that <a href="show_bug.cgi?id=[% bugid %]">[% terms.bug %]&nbsp;[% bugid %]</a> 
+  depends on</h3>
 [% IF dependson_ids.size > 0 %]
   (
   [% IF maxdepth -%]Up to [% maxdepth %] level[% "s" IF maxdepth > 1 %] deep | [% END %]
 [% END %]
 
 [%# Display the tree of bugs that this bug blocks. %]
-<h3>[% hide_resolved ? "Open $terms.bugs" : "$terms.Bugs" %]
- that <a href="show_bug.cgi?id=[% bugid %]">[% terms.bug %]&nbsp;[% bugid %]</a> blocks</h3>
+<h3>
+  [% IF hide_resolved %]
+    Open [% terms.bugs %]
+  [% ELSE %]
+    [% terms.Bugs %]
+  [% END %] 
+  that <a href="show_bug.cgi?id=[% bugid %]">[% terms.bug %]&nbsp;[% bugid %]</a> 
+  blocks</h3>
 [% IF blocked_ids.size > 0 %]
   (
   [% IF maxdepth -%]Up to [% maxdepth %] level[% "s" IF maxdepth > 1 %] deep | [% END %]
        <input name="maxdepth" type="hidden" value="[% maxdepth %]">
      [% END %]
      <input type="hidden" name="hide_resolved" value="[% hide_resolved ? 0 : 1 %]">
-     <input type="submit" value="[% hide_resolved ? "Show" : "Hide" %] Resolved">
+     <input type="submit" 
+            value="[% IF hide_resolved %]Show[% ELSE %]Hide[% END %] Resolved">
    </form>
    </td>
 
    <form method="get" action="showdependencytree.cgi"
          style="display: inline; margin: 0px;">
      [%# set to one form %]
-     <input type="submit" value="&nbsp;1&nbsp;" [%
-         realdepth < 2 || maxdepth == 1 ? "disabled" : ""
-     %]>
+     <input type="submit" value="&nbsp;1&nbsp;" 
+       [% "disabled" IF realdepth < 2 || maxdepth == 1 %]>
      <input name="id" type="hidden" value="[% bugid %]">
      <input name="maxdepth" type="hidden" value="1">
      <input name="hide_resolved" type="hidden" value="[% hide_resolved %]">
                        : ( maxdepth ? maxdepth - 1 : realdepth - 1 )
      %]">
      <input name="hide_resolved" type="hidden" value="[% hide_resolved %]">
-     <input type="submit" value="&nbsp;&lt;&nbsp;" [%
-        realdepth < 2 || ( maxdepth && maxdepth < 2 ) ? "disabled" : ""
-     %]>
+     <input type="submit" value="&nbsp;&lt;&nbsp;" 
+       [% "disabled" IF realdepth < 2 || ( maxdepth && maxdepth < 2 ) %]>
    </form>
    </td>
 
      <input name="id" type="hidden" value="[% bugid %]">
      <input name="hide_resolved" type="hidden" value="[% hide_resolved %]">
      <noscript>
-       <input type="submit" value="Change" [% realdepth < 2 ? "disabled" : "" %]>
+       <input type="submit" value="Change" [% "disabled" IF realdepth < 2 %]>
      </noscript>
    </form>
    </td>
        <input name="maxdepth" type="hidden" value="[% maxdepth + 1 %]">
      [% END %]
      <input name="hide_resolved" type="hidden" value="[% hide_resolved %]">
-     <input type="submit" value="&nbsp;&gt;&nbsp;" [%
-            realdepth < 2 || ! maxdepth || maxdepth >= realdepth ?
-            "disabled" : ""
-     %]>
+     <input type="submit" value="&nbsp;&gt;&nbsp;" 
+        [% "disabled" IF realdepth < 2 || !maxdepth || maxdepth >= realdepth %]
+    %]>
    </form>
    </td>
 
      <input name="id" type="hidden" value="[% bugid %]">
      <input name="hide_resolved" type="hidden" value="[% hide_resolved %]">
      <input type="submit" value="&nbsp;Unlimited&nbsp;"
-       [% maxdepth == 0 || maxdepth == realdepth ? "disabled" : "" %]>
+       [% "disabled" IF maxdepth == 0 || maxdepth == realdepth %]>
    </form>
    </td>
  </tr>
index 631842a403ffed1c1627b71e0833dcd122bd12de..1e9c13abe40077bf82376027ef106ee69aac476b 100644 (file)
 [%############################################################################%]
 
 [% BLOCK emails %]
-  <b>[% description %]:</b>
+  <b>[% description FILTER html %]:</b>
   [% IF names.size > 0 %]
     [%+ FOREACH name = names %]
-      [% name %][% ", " UNLESS loop.last() %]
+      [% name FILTER html %][% ", " UNLESS loop.last() %]
     [% END %]
   [% ELSE %]
     no one
index fd37707dccc98af24a8a67430b8f51bbbdf31771..b3e6af2500312c543d6132042fce5b4562ef3280 100644 (file)
 
   <p>
   [% IF use_target_milestone %]
-    You are moving the [% terms.bug %](s) to the product <b>[% form.product %]</b>,
+    You are moving the [% terms.bug %](s) to the product 
+    <b>[% form.product FILTER html %]</b>,
     and the version, component, and/or target milestone fields are no longer
     correct.  Please set the correct version, component, and target milestone now:
   [% ELSE %]
-    You are moving the [% terms.bug %](s) to the product <b>[% form.product %]</b>,
+    You are moving the [% terms.bug %](s) to the product 
+    <b>[% form.product FILTER html %]</b>,
     and the version and component fields are no longer correct.
     Please set the correct version and component now:
   [% END %]
index bda5e4f91209864b3789cc97d2613e181abac2f2..340a0ebf81525e1180682e6e47034af2fc3e8179 100644 (file)
@@ -97,7 +97,7 @@
     <tr>
       <td colspan="2">
         <b>Component:</b>&nbsp;
-        [% bug.component %]
+        [% bug.component FILTER html %]
       </td>
 
       <td colspan="2">
 
 [% BLOCK cell %]
   <td>
-    <b>[% attr.description%]:</b>&nbsp;
+    <b>[% attr.description FILTER html %]:</b>&nbsp;
     [% bug.${attr.name} FILTER html %]
   </td>
 [% END %]
index bcb5956ea83c41068b8892dc107daf7b345169d3..1505713ff12e3aa3b9d1ee5fbfb93fa3ca3aca16 100644 (file)
@@ -21,9 +21,9 @@
 
 [% PROCESS global/variables.none.tmpl %]
 
+[% h2 = voting_user.login FILTER html %]
 [% PROCESS global/header.html.tmpl
            title = "Show Votes"
-           h2 = voting_user.name
  %]
 
 [% canedit = 1 IF voting_user.login == user.login %]
index a1f0a89f2d9e7a64fcfd4141c4abf1ed3ffa6daf..afe3ef487c771cb3ae77e3821ca22c90e11361ec 100644 (file)
 # Safe vmethods                   - [% foo.size %]
 # TT loop variables               - [% loop.count %]
 # Already-filtered stuff          - [% wibble FILTER html %]
-#   where the filter is one of html|csv|js|url_quote|quoteUrls|time|uri|xml
-
-# Key:
-#
-# "#": directive should be filtered, but not doing so is not a security hole
-# The plan is to come back and add filtering for all those marked "#" after
-# the security release.
-#
-# "# Email": as above; but noting that it's an email address.
-# Other sorts of comments denote cleanups noticed while doing this work;
-# they should be fixed in the very short term.
+#   where the filter is one of html|csv|js|url_quote|quoteUrls|time|uri|xml|none
 
 %::safe = (
 
   'field.accesskey',
   'sel.name',
   'sel.accesskey',
-  'button_name', #
-],
-
-'search/knob.html.tmpl' => [
-  'button_name', #
-],
-
-'search/search-report-graph.html.tmpl' => [
-  'button_name', #
-],
-
-'search/search-report-table.html.tmpl' => [
-  'button_name', #
 ],
 
 'search/search-specific.html.tmpl' => [
 'reports/components.html.tmpl' => [
   'numcols',
   'comp.description', 
-  'comp.initialowner', # email address
-  'comp.initialqacontact', # email address
-],
-
-'reports/duplicates-simple.html.tmpl' => [
-  'title', #
 ],
 
 'reports/duplicates-table.html.tmpl' => [
   '"&maxrows=$maxrows" IF maxrows',
   '"&changedsince=$changedsince" IF changedsince',
-  '"&product=$product" IF product', #
-  '"&format=$format" IF format', #
   '"&bug_id=$bug_ids_string&sortvisible=1" IF sortvisible',
   'column.name', 
   'column.description',
   'bug.id', 
   'bug.count', 
   'bug.delta', 
-  'bug.component', #
-  'bug.bug_severity', #
-  'bug.op_sys', #
-  'bug.target_milestone', #
 ],
 
 'reports/duplicates.html.tmpl' => [
 ],
 
 'reports/report-table.csv.tmpl' => [
-  '"$tbl_field_disp: $tbl\n" IF tbl_field', #
-  'row_field_disp IF row_field', #
-  'col_field_disp', #
   'num_bugs',
   'data.$tbl.$col.$row',
+  'title',
   '', # This is not a bug in the filter exceptions - this template has an 
       # empty directive which is necessary for it to work properly.
 ],
   '"&amp;$tbl_vals" IF tbl_vals', 
   '"&amp;$col_vals" IF col_vals', 
   '"&amp;$row_vals" IF row_vals', 
-  'tbl_disp', # 
   'classes.$row_idx.$col_idx', 
   'urlbase', 
   'data.$tbl.$col.$row', 
 ],
 
 'reports/report.html.tmpl' => [
-  'tbl_field_disp IF tbl_field', #
-  'row_field_disp IF row_field', #
-  'col_field_disp', #
   'imagebase', 
   'width', 
   'height', 
   'imageurl', 
   'formaturl', 
   'other_format.name', 
-  'other_format.description', #
   'sizeurl', 
   'switchbase',
   'format',
 
 'list/change-columns.html.tmpl' => [
   'column', 
-  'field_descs.${column} || column', #
 ],
 
 'list/edit-multiple.html.tmpl' => [
 
 'list/list.html.tmpl' => [
   'buglist', 
-  'bugowners', # email address
 ],
 
 'list/list.rdf.tmpl' => [
 ],
 
 'list/table.html.tmpl' => [
-  'abbrev.$id.title || field_descs.$id || column.title', #
   'tableheader',
   'bug.bug_id', 
 ],
   'proddesc.$p', 
 ],
 
+# You are not permitted to add any values here. Everything in this file should 
+# be filtered unless there's an extremely good reason why not, in which case,
+# use the "none" dummy filter.
 'global/code-error.html.tmpl' => [
-  'parameters', 
-  'bug.bug_id',
-  'field', 
-  'argument', #
-  'function', #
-  'bug_id', # Need to remove unused error no_bug_data
-  'variables.id', 
-  'template_error_msg', # Should move filtering from CGI.pl to template
-  'error', 
-  'error_message', 
 ],
-
 'global/header.html.tmpl' => [
   'javascript', 
   'style', 
 ],
 
 'global/messages.html.tmpl' => [
-  'parameters',
-  '# ---', # Work out what this is
-  'namedcmd', #
-  'old_email', # email address
-  'new_email', # email address
   'message_tag', 
   'series.frequency * 2',
 ],
 
 'global/select-menu.html.tmpl' => [
   'options', 
-  'onchange', # Again, need to be certain where we are filtering
   'size', 
 ],
 
 'global/useful-links.html.tmpl' => [
   'email', 
-  'user.login', # Email address
 ],
 
-# Need to change this and code-error to use a no-op filter, for safety
+# You are not permitted to add any values here. Everything in this file should 
+# be filtered unless there's an extremely good reason why not, in which case,
+# use the "none" dummy filter.
 'global/user-error.html.tmpl' => [
-  'disabled_reason', 
-  'bug_link', 
-  'action', # 
-  'bug_id', 
-  'both', 
-  'filesize', 
-  'attach_id', 
-  'field', 
-  'field_descs.$field', 
-  'today', 
-  'product', #
-  'max', 
-  'votes', 
-  'error_message', 
 ],
 
 'global/confirm-user-match.html.tmpl' => [
-  '# use the global field descs', # Need to fix commenting style here
   'script',
-  '# this is messy to allow later expansion',
-  '# ELSIF for things that don\'t belong in the field_descs hash here',
   'fields.${field_name}.flag_type.name',
 ],
 
 ],
 
 'bug/dependency-tree.html.tmpl' => [
-  'hide_resolved ? "Open $terms.bugs" : "$terms.Bugs"',
   'bugid', 
   'maxdepth', 
   'dependson_ids.join(",")', 
   'blocked_ids.join(",")', 
   'dep_id', 
   'hide_resolved', 
-  'realdepth < 2 ? "disabled" : ""', 
   'maxdepth + 1', 
-  'maxdepth == 0 || maxdepth == realdepth ? "disabled" : ""', 
-  'realdepth < 2 || ( maxdepth && maxdepth < 2 ) ? "disabled" : ""',
   'maxdepth > 0 && maxdepth <= realdepth ? maxdepth : ""',
   'maxdepth == 1 ? 1
                        : ( maxdepth ? maxdepth - 1 : realdepth - 1 )',
-  'realdepth < 2 || ! maxdepth || maxdepth >= realdepth ?
-            "disabled" : ""',
 ],
 
 'bug/edit.html.tmpl' => [
 
 'bug/show-multiple.html.tmpl' => [
   'bug.bug_id', 
-  'bug.component', #
-  'attr.description', #
 ],
 
 'bug/show.xml.tmpl' => [
   'product.total', 
   'product.maxvotes', 
 ],
-# h2 = voting_user.name # Email
 
 'bug/process/confirm-duplicate.html.tmpl' => [
   'original_bug_id', 
   'id', 
 ],
 
-'bug/process/verify-new-product.html.tmpl' => [
-  'form.product', # 
-],
-
-'bug/process/bugmail.html.tmpl' => [
-  'description', 
-  'name', # Email 
-],
-
 'bug/create/comment.txt.tmpl' => [
   'form.comment', 
 ],
 
 'bug/create/create.html.tmpl' => [
-  'default.bug_status', #
   'g.bit',
   'g.description',
   'sel.name',
 'bug/create/create-guided.html.tmpl' => [
   'matches.0', 
   'tablecolour',
-  'product', #
   'buildid',
   'sel', 
 ],
 ],
 
 'bug/activity/table.html.tmpl' => [
-  'operation.who', # Email
   'change.attachid', 
   'change.field', 
 ],
 
 'attachment/list.html.tmpl' => [
   'attachment.attachid', 
-  'FOR flag = attachment.flags', # Bug? No FOR directive
-  'flag.type.name', 
   'flag.status',
-  'flag.requestee.nick', # Email
   'bugid',
 ],
 
 
 'admin/flag-type/confirm-delete.html.tmpl' => [
   'flag_count', 
-  'name', #
   'flag_type.id', 
 ],
 
   'action', 
   'type.id', 
   'type.target_type', 
-  'category', #
-  'item', #
   'type.sortkey || 1',
-  '(last_action == "enter" || last_action == "copy") ? "Create" : "Save Changes"',
   'typeLabelLowerPlural',
   'typeLabelLowerSingular',
 ],
   'target', 
 ],
 
-'account/prefs/account.html.tmpl' => [
-  'login_change_date', #
-],
-
 'account/prefs/email.html.tmpl' => [
-  'watchedusers', # Email
   'role', 
   'reason.name', 
   'reason.description',
 ],
 
 );
-
-# Should filter reports/report.html.tmpl:130 $format
index 60ae950432aa3c5596bddd1c72dd253d226be3bc..939c0c4dcb3cbd543279b5f606b94bd1bf70e9e4 100644 (file)
@@ -28,6 +28,9 @@
 
 [%# This is a list of all the possible code errors. Please keep them in
   # alphabetical order by error tag, and leave a blank line between errors.
+  #
+  # Note that you must explicitly filter every single template variable
+  # in this file; if you do not wish to change it, use the "none" filter.
   #%]
 
 [% PROCESS global/variables.none.tmpl %]
 [% DEFAULT title = "Internal Error" %]
 
 [% error_message = BLOCK %]
-  [% IF    error == "aaa_example_error_tag" %]
-    [% title = "Example Error" %]
-    This is an example error. The title is set above. This text is the body
-    of the error. It can contain arbitrary <b>HTML</b>, and also references
-    to any [% parameters %] which you may have set before calling
-    ThrowCodeError.
-
-  [% ELSIF error == "action_unrecognized" %]
+  [% IF    error == "action_unrecognized" %]
     I don't recognize the value (<em>[% variables.action FILTER html %]</em>)
     of the <em>action</em> variable.
   
@@ -61,8 +57,8 @@
     An authorization handler return value was not handled by the login code.
 
   [% ELSIF error == "bug_error" %]
-    Trying to retrieve [% terms.bug %] [%+ bug.bug_id %] returned the error
-    [% bug.error FILTER html %]
+    Trying to retrieve [% terms.bug %] [%+ bug.bug_id FILTER html %] returned 
+    the error [% bug.error FILTER html %].
     
   [% ELSIF error == "chart_data_not_generated" %]
     The tool which gathers [% terms.bug %] counts has not been run yet.
@@ -82,7 +78,7 @@
     Run checksetup.pl for installation instructions.
 
   [% ELSIF error == "field_type_mismatch" %]
-    Cannot seem to handle <code>[% field %]</code>
+    Cannot seem to handle <code>[% field FILTER html %]</code>
     and <code>[% type FILTER html %]</code> together.
 
   [% ELSIF error == "gd_not_installed" %]
     '[% bit FILTER html %]'.
 
   [% ELSIF error == "bad_arg" %]
-    Bad argument <code>[% argument %]</code> sent to
-    <code>[% function %]</code> function.
+    Bad argument <code>[% argument FILTER html %]</code> sent to
+    <code>[% function FILTER html %]</code> function.
 
   [% ELSIF error == "invalid_attach_id_to_obsolete" %]
      The attachment number of one of the attachments you wanted to obsolete,
     but you tried to flag it as obsolete while creating a new attachment to 
     [% terms.bug %] [%+ my_bug_id FILTER html %].
         
-  [% ELSIF error == "no_bug_data" %]
-    No data when fetching [% terms.bug %] [%+ bug_id %].
-    
   [% ELSIF error == "flag_nonexistent" %]
-    There is no flag with ID #[% variables.id %].
+    There is no flag with ID #[% variables.id FILTER html %].
   
   [% ELSIF error == "flag_status_invalid" %]
     The flag status <em>[% variables.status FILTER html %]</em> is invalid.
     a positive integer.
 
   [% ELSIF error == "flag_type_nonexistent" %]
-    There is no flag type with the ID <em>[% variables.id %]</em>.
+    There is no flag type with the ID <em>[% variables.id FILTER html %]</em>.
   
   [% ELSIF error == "flag_type_product_nonexistent" %]
     The product <em>[% variables.product FILTER html %]</em> does not exist.
     Something is seriously wrong with the token generation system.
 
   [% ELSIF error == "template_error" %]
-    [% template_error_msg %]
+    [% template_error_msg FILTER html %]
 
   [% ELSIF error == "unable_to_retrieve_password" %]
      I was unable to retrieve your old password from the database.
   [% ELSE %]
     [%# Give sensible error if error functions are used incorrectly.
       #%]
-    You are using [% terms.Bugzilla %]'s ThrowCodeError() function incorrectly. You
-    passed in the string '[% error %]'. The correct use is to pass
-    in a tag, and define that tag in the file code-error.html.tmpl.<br>
+    You are using [% terms.Bugzilla %]'s ThrowCodeError() function incorrectly. 
+    You passed in the string '[% error FILTER html %]'. The correct use is to 
+    pass in a tag, and define that tag in the file code-error.html.tmpl.<br>
     <br>
     If you are a [% terms.Bugzilla %] end-user seeing this message, please save this
     page and send it to [% Param('maintainer') %].
   <tr>
     <td bgcolor="#ff0000">
       <font size="+2">
-        [% error_message %]
+        [% error_message FILTER none %]
       </font>
     </td>
   </tr>
index 037f7385c175c49898b6997c63abe2f709f71f7b..ec4c4f15040b7a4731d14093c036145bed97110d 100644 (file)
@@ -38,7 +38,7 @@
   #     self-referential URL
   #%]
 
-[% # use the global field descs %]
+[%# use the global field descs %]
 [% PROCESS "global/field-descs.none.tmpl" %]
 
 [% IF matchsuccess == 1 %]
@@ -74,7 +74,7 @@
       </td>
     </tr>
 
-  [% # this is messy to allow later expansion %]
+  [%# this is messy to allow later expansion %]
 
   [% FOREACH field = matches %]
     <tr>
   [% IF field_descs.${field_name} %]
     [%  field_descs.${field_name} FILTER html -%]
 
-  [%- # ELSIF for things that don't belong in the field_descs hash here -%]
+  [%-# ELSIF for things that don't belong in the field_descs hash here -%]
 
   [% ELSIF field_name.match("^requestee") %]
     [% fields.${field_name}.flag_type.name %] requestee
index e8aa8047f02fda2b0c4c6286a0306951a0ec4c61..e84e9747dcb07ed7f03e6e082cd4e33499edc9d1 100644 (file)
 [% message_tag = message %]
 
 [% message = BLOCK %]
-  [% IF    message_tag == "aaa_example_message_tag" %]
-    [% title = "Example Message" %]
-    This is an example message. The title is set above. This text is the body
-    of the message. It can contain arbitrary <b>HTML</b>, and also references
-    to any [% parameters %] which you may have set.
-
-  [% ELSIF message_tag == "buglist_adding_field" %]
+  [% IF    message_tag == "buglist_adding_field" %]
     [% title = "Adding field to query page..." %]
     [% link  = "Click here if the page does not redisplay automatically." %]
-    [% # --- %] 
 
   [% ELSIF message_tag == "buglist_load_named_query" %]
-    [% title = BLOCK %]Loading your query named [% namedcmd %][% END %]
+    [% title = BLOCK %]
+      Loading your query named [% namedcmd FILTER html %]
+    [% END %]
     [% link  = "Click here if the page does not redisplay automatically." %]
-    [% # --- %] 
 
   [% ELSIF message_tag == "buglist_updated_named_query" %]
     OK, your query named <code>[% queryname FILTER html %]</code> is updated.
@@ -81,8 +75,9 @@
   [% ELSIF message_tag == "email_change_cancelled_reinstated" %]
     [% title = "Cancel Request to Change Email Address" %]
     The request to change the email address for the
-    [% old_email %] account to [% new_email %] has been cancelled.
-    Your old account settings have been reinstated.
+    [% old_email FILTER html %] account to 
+    [% new_email FILTER html %] has been cancelled.
+   Your old account settings have been reinstated.
 
   [% ELSIF message_tag == "logged_out" %]
     [% title = "Logged Out" %]
index 7b7fddb29adb0bc2ce6d93a07195f6a51c92f389..f1768d0d564568587981d727150af659449b577f 100644 (file)
@@ -44,7 +44,7 @@
 [% options_type = BLOCK %][% options %][% END %]
 
 <select name="[% name FILTER html %]" 
-        [% IF onchange %]onchange="[% onchange %]"[% END %]
+        [% IF onchange %]onchange="[% onchange FILTER html %]"[% END %]
         [% IF multiple %] multiple [% IF size %] size="[% size %]" [% END %] [% END %]>
   [% IF options_type.search("ARRAY") %]
     [% FOREACH value = options %]
index 889a5091a58af233324b309e796a1fb6f4c05876..135dad987efcdd59604d17575c903cc3a617e4e0 100644 (file)
@@ -73,7 +73,8 @@
         [% ' | <a href="sanitycheck.cgi">Sanity&nbsp;check</a>' 
                                                    IF user.groups.tweakparams %]
 
-        | <a href="relogin.cgi">Log&nbsp;out</a>&nbsp;[% user.login %]
+        | <a href="relogin.cgi">Log&nbsp;out</a>&nbsp;
+          [% user.login FILTER html %]
       </td>
     </tr> 
 
index de5d60c6c7a0775bd49d85f78d88f8d79de579f8..b1cf46ecb48b4da7e086d0ce3470854a373470f3 100644 (file)
@@ -27,6 +27,9 @@
 
 [%# This is a list of all the possible user errors. Please keep them in
   # alphabetical order by error tag, and leave a blank line between errors.
+  #
+  # Note that you must explicitly filter every single template variable
+  # in this file; if you do not wish to change it, use the "none" filter.
   #%]
 
 [% PROCESS global/variables.none.tmpl %]
@@ -44,7 +47,7 @@
 
   [% ELSIF error == "account_disabled" %]
     [% title = "Account Disabled" %]
-    [% disabled_reason %]
+    [% disabled_reason FILTER none %]
     <hr>
     If you believe your account should be restored, please
     send email to [% Param("maintainer") %] explaining why.
@@ -72,7 +75,7 @@
 
   [% ELSIF error == "alias_in_use" %]
     [% title = "Alias In Use" %]
-    [% bug_link %] has already taken the alias
+    [% bug_link FILTER none %] has already taken the alias 
     <em>[% alias FILTER html %]</em>.  Please choose another one.
 
   [% ELSIF error == "alias_is_numeric" %]
@@ -95,7 +98,7 @@
 
   [% ELSIF error == "authorization_failure" %]
     [% title = "Authorization Failed" %]
-    You are not allowed to [% action %].
+    You are not allowed to [% action FILTER html %].
 
   [% ELSIF error == "attachment_access_denied" %]
     [% title = "Access Denied" %]
 
   [% ELSIF error == "bug_access_denied" %]
     [% title = "Access Denied" %]
-    You are not authorized to access [% terms.bug %] #[% bug_id %].
+    You are not authorized to access [% terms.bug %] #[% bug_id FILTER html %].
 
   [% ELSIF error == "bug_access_query" %]
     [% title = "Access Denied" %]
-    You are not authorized to access [% terms.bug %] #[% bug_id %]. To see
-    this [% terms.bug %], you must
-    first <a href="show_bug.cgi?id=[% bug_id %]&amp;GoAheadAndLogIn=1">log
+    You are not authorized to access [% terms.bug %] #[% bug_id FILTER html %].
+    To see this [% terms.bug %], you must
+    first <a href="show_bug.cgi?id=
+                   [% bug_id FILTER url_quote %]&amp;GoAheadAndLogIn=1">log
     in to an account</a> with the appropriate permissions.
 
   [% ELSIF error == "buglist_parameters_required" %]
     [% title = "Dependency Loop Detected" %]
     The following [% terms.bug %](s) would appear on both the "depends on"
     and "blocks" parts of the dependency tree if these changes
-    are committed: [% both %]. This would create a circular
+    are committed: [% both FILTER none %]. This would create a circular
     dependency, which is not allowed.
 
   [% ELSIF error == "dependency_loop_single" %]
 
   [% ELSIF error == "file_too_large" %]
     [% title = "File Too Large" %]
-    The file you are trying to attach is [% filesize %] kilobytes (KB) in size.
+    The file you are trying to attach is [% filesize FILTER html %] 
+    kilobytes (KB) in size.
     Non-patch attachments cannot be more than [% Param('maxattachmentsize') %]
     KB.
     If your attachment is an image, try converting it to a compressable
     [% title = "Flag Requestee Not Authorized" %]
 
     You asked [% requestee.identity FILTER html %]
-    for <code>[% flag_type.name FILTER html %]</code> on [% terms.bug %] [% bug_id -%]
-    [% IF attach_id %], attachment [% attach_id %][% END %], but that [% terms.bug %]&bnsp;
+    for <code>[% flag_type.name FILTER html %]</code> on [% terms.bug %] 
+    [% bug_id FILTER html -%]
+    [% IF attach_id %], attachment [% attach_id FILTER html %][% END %], 
+    but that [% terms.bug %]&bnsp;
     has been restricted to users in certain groups, and the user you asked
     isn't in all the groups to which the [% terms.bug %] has been restricted.
     Please choose someone else to ask, or make the [% terms.bug %] accessible to users
     [% title = "Flag Requestee Not Authorized" %]
 
     You asked [% requestee.identity FILTER html %]
-    for <code>[% flag_type.name FILTER html %]</code> on [% terms.bug %]&nbsp;[% bug_id %],
-    attachment [% attach_id %], but that attachment is restricted to users
+    for <code>[% flag_type.name FILTER html %]</code> on 
+    [% terms.bug %]&nbsp;[% bug_id FILTER html %],
+    attachment [% attach_id FILTER html %], but that attachment is restricted 
+    to users
     in the [% Param("insidergroup") FILTER html %] group, and the user
     you asked isn't in that group.  Please choose someone else to ask,
     or ask an administrator to add the user to the group.
     
   [% ELSIF error == "illegal_attachment_edit" %]
     [% title = "Unauthorised Action" %]
-    You are not authorised to edit attachment [% attach_id %].
+    You are not authorised to edit attachment [% attach_id FILTER html %].
 
   [% ELSIF error == "illegal_attachment_edit_bug" %]
     [% title = "Unauthorised Action" %]
-    You are not authorised to edit attachments on [% terms.bug %] [%+ bug_id %].
+    You are not authorised to edit attachments on [% terms.bug %] 
+    [%+ bug_id FILTER html %].
          
   [% ELSIF error == "illegal_attachment_is_patch" %]
     [% title = "Your Query Makes No Sense" %]
          
   [% ELSIF error == "illegal_change" %]
     [% title = "Not allowed" %]
-    You tried to change the <strong>[% field %]</strong> field 
+    You tried to change the 
+    <strong>[% field_descs.$field FILTER html %]</strong> field 
     from <em>[% oldvalue FILTER html %]</em> to 
     <em>[% newvalue FILTER html %]</em>, 
     but only the owner or submitter of the [% terms.bug %], or a 
 
   [% ELSIF error == "invalid_bug_id_non_existent" %]
     [% title = BLOCK %]Invalid [% terms.Bug %] ID[% END %]
-    [% terms.Bug %] #[% bug_id %] does not exist.
+    [% terms.Bug %] #[% bug_id FILTER html %] does not exist.
     
   [% ELSIF error == "invalid_bug_id_or_alias" %]
     [% title = BLOCK %]Invalid [% terms.Bug %] ID[% END %]
 
   [% ELSIF error == "milestone_required" %]
     [% title = "Milestone Required" %]
-    You must determine a target milestone for [% terms.bug %] [%+ bug_id %]
+    You must determine a target milestone for [% terms.bug %] 
+    [%+ bug_id FILTER html %]
     if you are going to accept it.  Part of accepting 
     [% terms.abug %] is giving an estimate of when it will be fixed.
 
 
   [% ELSIF error == "need_positive_number" %]
     [% title = "Positive Number Required" %]
-    The <em>[% field_descs.$field %]</em> field requires a positive number.
+    The <em>[% field_descs.$field FILTER html %]</em> field requires a positive
+    number.
 
   [% ELSIF error == "need_product" %]
     [% title = "Product Required" %]
 
   [% ELSIF error == "no_dupe_stats" %]
     [% title = "Cannot Find Duplicate Statistics" %]
-    There are no duplicate statistics for today ([% today %]) or yesterday.
+    There are no duplicate statistics for today ([% today FILTER html %]) 
+    or yesterday.
 
   [% ELSIF error == "no_dupe_stats_error_today" %]
     [% title = "Error Reading Today's Dupes File" %]
 
   [% ELSIF error == "no_dupe_stats_error_yesterday" %]
     [% title = "Error Reading Yesterday's Dupes File" %]
-    There are no duplicate statistics for today ([% today %]), and an error
+    There are no duplicate statistics for today ([% today FILTER html %]), 
+    and an error
     occurred opening yesterday's dupes file: [% error_msg FILTER html %].
 
   [% ELSIF error == "no_html_in_quips" %]
 
   [% ELSIF error == "patch_too_large" %]
     [% title = "File Too Large" %]
-    The file you are trying to attach is [% filesize %] kilobytes (KB) in size.
+    The file you are trying to attach is [% filesize FILTER html %] 
+    kilobytes (KB) in size.
     Patches cannot be more than [% Param('maxpatchsize') %] KB in size.
     Try breaking your patch into several pieces.
 
 
   [% ELSIF error == "product_edit_denied" %]
     [% title = "Product Edit Access Denied" %]
-    You are not permitted to edit [% terms.bugs %] in product [% product %].
+    You are not permitted to edit [% terms.bugs %] in product 
+    [% product FILTER html %].
 
   [% ELSIF error == "query_name_missing" %]
     [% title = "No Query Name Specified" %]
 
   [% ELSIF error == "too_many_votes_for_bug" %]
     [% title = "Illegal Vote" %]
-    You may only use at most [% max %] votes for a single [% terms.bug %] in the
+    You may only use at most [% max FILTER html %] votes for a single 
+    [%+ terms.bug %] in the
     <tt>[% prod FILTER html %]</tt> product, but you are trying to use
-    [% votes %].
+    [% votes FILTER html %].
 
   [% ELSIF error == "too_many_votes_for_product" %]
     [% title = "Illegal Vote" %]
-    You may only use at most [% max %] votes for [% terms.bugs %] in the
+    You may only use at most [% max FILTER html %] votes for [% terms.bugs %] 
+    in the
     <tt>[% prod FILTER html %]</tt> product, but you are trying to use
-    [% votes %].
+    [% votes FILTER html %].
 
   [% ELSIF error == "token_inexistent" %]
     [% title = "Token Does Not Exist" %]
 
   [% ELSIF error == "value_out_of_range" %]
     [% title = "Value Out Of Range" %]
-    Value is out of range for field <em>[% field_descs.$field %]</em>.
+    Value is out of range for field 
+    <em>[% field_descs.$field FILTER html %]</em>.
 
   [% ELSIF error == "zero_length_file" %]
     [% title = "File Is Empty" %]
   <tr>
     <td bgcolor="#ff0000">
       <font size="+2">
-        [% error_message %]
+        [% error_message FILTER none %]
       </font>
     </td>
   </tr>
index 61ff34dd76303413b8a289ac11d039b566d7c80a..d49a152c8fd8359fbfd0c1fdcb53bf76881803c9 100644 (file)
@@ -42,7 +42,9 @@
   [% FOREACH column = masterlist %]
     <input type="checkbox" id="[% column %]" name="column_[% column %]"
       [% "checked='checked'" IF lsearch(collist, column) != -1 %]>
-    <label for="[% column %]">[% field_descs.${column} || column %]</label>
+    <label for="[% column %]">
+      [% (field_descs.${column} || column) FILTER html %]
+    </label>
     <br>
   [% END %]
 
index f02d9290461468fcc4c11e44a13f4dfab223f494..a61bdef9810826688eb51115dc0481fed19089fa 100644 (file)
     [% END %]
 
     [% IF bugowners %]
-      <a href="mailto:[% bugowners %]">Send Mail to [% terms.Bug %] Owners</a> &nbsp;&nbsp;
+      <a href="mailto:[% bugowners FILTER html %]">Send 
+      Mail to [% terms.Bug %] Owners</a> 
+      &nbsp;&nbsp;
     [% END %]
 
     <a href="query.cgi?
index b6d5010d0fd701294979f62d1bd101c09ac40114..d1af07392dc9c291cd02c4348dc730f8632bcf47 100644 (file)
       <a name="[% comp.name FILTER html %]">[% comp.name FILTER html %]</a>
     </td>
     <td>
-      <a href="mailto:[% comp.initialowner %][% Param('emailsuffix') %]">
+      <a href="mailto:[% comp.initialowner FILTER html %]
+                      [% Param('emailsuffix') %]">
       [% comp.initialowner FILTER html %]</a>
     </td>
     [% IF Param("useqacontact") %]
       <td>
-        <a href="mailto:[% comp.initialqacontact %][% Param('emailsuffix') %]">
-        [% comp.initialqacontact %]</a>
+        <a href="mailto:[% comp.initialqacontact FILTER html %]
+                        [% Param('emailsuffix') %]">
+        [% comp.initialqacontact FILTER html %]</a>
       </td>
     [% END %]
   </tr>
index a74926f8edb326bcc47c26e1562b09f285d49d18..22055779aa19ea10304fb01955d525084363f170 100644 (file)
@@ -34,7 +34,7 @@
   [% END%]
 
   <head>
-    <title>[% title %]</title>
+    <title>[% title FILTER html %]</title>
   </head>
 
   <body>
index 0ebd2b4de555254519239a3c89bbea65105ba570..34e070f10131048e85c6839847ed871bdc8436ed 100644 (file)
               [% bug_ids_string = bug_ids.join(',') %]
               <a href="duplicates.cgi?sortby=[% column.name %]
                 [% IF sortby == column.name %]
-                  [% "&reverse=1" IF NOT reverse %]
+                  [% "&amp;reverse=1" IF NOT reverse %]
                 [% ELSE %]
                   [%-# Some columns start off reversed %]
-                  [% "&reverse=1" IF column.name.match('delta|count') %]
+                  [% "&amp;reverse=1" IF column.name.match('delta|count') %]
                 [% END %]
-                [% "&maxrows=$maxrows" IF maxrows %]
-                [% "&changedsince=$changedsince" IF changedsince %]
-                [% "&openonly=1" IF openonly %]
-                [% "&product=$product" IF product %]
-                [% "&format=$format" IF format %]
-                [% "&bug_id=$bug_ids_string&sortvisible=1" IF sortvisible %]">
+                [% "&amp;maxrows=$maxrows" IF maxrows %]
+                [% "&amp;changedsince=$changedsince" IF changedsince %]
+                [% "&amp;openonly=1" IF openonly %]
+                [% IF product %]&amp;product=[% product FILTER html %][% END %]
+                [% IF format %]&amp;format=[% format FILTER html %][% END %]
+                [% "&amp;bug_id=$bug_ids_string&amp;sortvisible=1" 
+                                                            IF sortvisible %]">
                 [% column.description %]</a>
             </b>
           </center>
         <td><center>[% bug.delta %]</center></td>
       [% END %]
 
-      <td>[% bug.component %]</td>
-      <td><center>[% bug.bug_severity %]</center></td>
-      <td><center>[% bug.op_sys %]</center></td>
-      <td><center>[% bug.target_milestone %]</center></td>
+      <td>[% bug.component FILTER html %]</td>
+      <td><center>[% bug.bug_severity FILTER html %]</center></td>
+      <td><center>[% bug.op_sys FILTER html %]</center></td>
+      <td><center>[% bug.target_milestone FILTER html %]</center></td>
       <td>[% bug.short_desc FILTER html %]</td>
     </tr>
   [% END %]
index 989790e478401b6cdc882263cc456fcdcaab7fcc..216419fea5eb825cd6c23358a3f031e9d4043fe5 100644 (file)
 [% row_field_disp = field_descs.$row_field || row_field %]
 
 [% title = BLOCK %]
-  [% "$tbl_field_disp: $tbl\n" IF tbl_field %]
-  [% row_field_disp IF row_field %]
+  [% IF tbl_field %]
+    [% tbl_field_disp FILTER csv %]: [% tbl FILTER csv %]
+
+  [% END %]
+  [% IF row_field %]
+    [% row_field_disp FILTER csv %]
+  [% END %]
   [% " / " IF col_field AND row_field %]
-  [% col_field_disp %]
+  [% col_field_disp FILTER csv %]
 [% END %]
 
-[% title FILTER csv %],
+[% title %],
 [% IF col_field -%]
 [% FOREACH col = col_names -%]
   [% col FILTER csv -%],
index f28c39590a99c95253787a07167504a0e3eb3eaf..e4b52b4888fe432e3da294e8b8599d0197a509dc 100644 (file)
@@ -50,7 +50,7 @@
       <td>
       </td>
       <td align="center">        
-        <h2>[% tbl_disp %]</h2>
+        <h2>[% tbl_disp FILTER html %]</h2>
       </td>
     </tr>
   [% END %]  
index 31308c10c719651e372df0eb9e4ec338a64a14ad..19d8c722faa76943b896d60a51060b83209eda16 100644 (file)
 
 [% title = BLOCK %]
   Report: 
-  [% tbl_field_disp IF tbl_field %]
+  [% IF tbl_field %]
+    [% tbl_field_disp FILTER html %]
+  [% END %]
   [% " / " IF tbl_field AND (col_field OR row_field) %]
-  [% row_field_disp IF row_field %]
+  [% IF row_field %]
+    [% row_field_disp FILTER html %]
+  [% END %]
   [% " / " IF col_field AND row_field %]
-  [% col_field_disp %]
+  [% col_field_disp FILTER html %]
 [% END %]
 
 [% PROCESS global/header.html.tmpl 
           [% UNLESS other_format.name == format %]
             <a href="[% formaturl %]&amp;format=[% other_format.name %]">
           [% END %]
-          [% other_format.description %]
+          [% other_format.description FILTER html %]
           [% "</a>" UNLESS other_format.name == format %] | 
         [% END %]
         <a href="[% formaturl %]&amp;ctype=csv&amp;format=table">CSV</a> 
           &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
         </td>
 
-        [% sizeurl = "report.cgi?$switchbase&amp;action=wrap&amp;format=$format" %]
+        [% sizeurl = BLOCK %]report.cgi?
+          [% switchbase %]&amp;action=wrap&amp;format=
+          [% format FILTER html %][% END %]
         <td align="center">
           <a href="[% sizeurl %]&amp;width=[% width %]&amp;height=
                    [% height + 100 %]">Taller</a><br>
index 6862ac6f6012cb1fc879328179cbf742c23aa989..db20c6aa5920bfd96b4024bc9910ba1c8b667cad 100644 (file)
@@ -352,7 +352,7 @@ function selectProduct(f) {
              value="[% default.short_desc.0 FILTER html %]">
     </td>
     <td>
-      <input type="submit" value="[% button_name %]">
+      <input type="submit" value="[% button_name FILTER html %]">
     </td>
   </tr>
 
index 27f37fbd77e28d09e2665cfac30ca9c61585f111..8386eff042bfd365447a1feab4099f8200461304 100644 (file)
   [% END %]
   </select>
 
-  <input type="submit" value="[% button_name %]">
+  <input type="submit" value="[% button_name FILTER html %]">
 
   [% IF userdefaultquery %]
      <p>
index 51911fb297b4305db5caca115fe02c931ba99a72..7793f30126fb01e39ccf7f800111b5203370fd71 100644 (file)
 [% PROCESS search/form.html.tmpl %]
 
 <br>
-<input type="submit" value="[% button_name %]">
+<input type="submit" value="[% button_name FILTER html %]">
 <input type="hidden" name="action" value="wrap">
 <hr>
 
index 43010f16cfcd80aad263b37391be29d531520880..b850f93c87d1e601564a8698ff02e2da57cb1253 100644 (file)
@@ -82,7 +82,7 @@
 [% PROCESS search/form.html.tmpl %]
 
 <br>
-<input type="submit" value="[% button_name %]">
+<input type="submit" value="[% button_name FILTER html %]">
 <input type="hidden" name="format" value="table">
 <input type="hidden" name="action" value="wrap">
 <hr>