]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 731178 (CVE-2012-4199): [SECURITY] field-events.js.tmpl discloses product and...
authorFrédéric Buclin <LpSolit@gmail.com>
Tue, 13 Nov 2012 17:06:13 +0000 (18:06 +0100)
committerFrédéric Buclin <LpSolit@gmail.com>
Tue, 13 Nov 2012 17:06:13 +0000 (18:06 +0100)
r=dkl a=LpSolit

template/en/default/bug/edit.html.tmpl
template/en/default/bug/field-events.js.tmpl

index e11e244f646f71dbfb116f03230bd344e178955b..de9afb56cb0d28a5411b7e30f6ba06d9f989eb04 100644 (file)
@@ -8,8 +8,8 @@
 
 [% PROCESS bug/time.html.tmpl %]
 
-  <script type="text/javascript">
-  <!--
+<script type="text/javascript">
+<!--
 [% IF user.is_timetracker %]
   var fRemainingTime = [% bug.remaining_time %]; // holds the original value
   function adjustRemainingTime() {
@@ -30,6 +30,7 @@
   }
 [% END %]
 
+[% IF user.id %]
   /* Index all classifications so we can keep track of the classification
    * for the selected product, which could control field visibility.
    */
@@ -38,9 +39,9 @@
       all_classifications['[% product.name FILTER js %]'] = '
           [%- product.classification.name FILTER js %]';
   [%- END %]
-
-  //-->
-  </script>
+[% END %]
+//-->
+</script>
 
 <form name="changeform" id="changeform" method="post" action="process_bug.cgi">
 
index 003391c34c6c29da3638c326344d0485117b9671..d37f4257cd9300f85f6a185941418aa96a340889 100644 (file)
   #%]
 
 [% FOREACH controlled_field = field.controls_visibility_of %]
+  [% vis_names = [] %]
+  [% FOREACH visibility_value = controlled_field.visibility_values %]
+    [%# Exclude non-enterable products and components outside the current product. %]
+    [% NEXT IF field.name == "product"
+               && visibility_value.id != product.id
+               && !user.can_enter_product(visibility_value) %]
+    [% NEXT IF field.name == "component" && visibility_value.product_id != product.id %]
+    [% vis_names.push(visibility_value.name) %]
+  [% END %]
+
+  [% NEXT UNLESS vis_names.size %]
+
   showFieldWhen('[% controlled_field.name FILTER js %]',
                 '[% field.name FILTER js %]', [
-  [%- FOREACH visibility_value = controlled_field.visibility_values -%]
-    '[%- visibility_value.name FILTER js -%]'[% "," UNLESS loop.last %]
-  [%- END %]
+                [%~ FOREACH vis_name = vis_names ~%]
+                  '[% vis_name FILTER js %]'[% "," UNLESS loop.last %]
+                [%~ END ~%]
   ]);
 [% END %]