]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 1054702: CSV export vulnerable to formulae injection
authorSimon Green <sgreen@redhat.com>
Mon, 6 Oct 2014 15:04:40 +0000 (15:04 +0000)
committerDavid Lawrence <dkl@mozilla.com>
Mon, 6 Oct 2014 15:04:40 +0000 (15:04 +0000)
r=glob,a=glob

Bugzilla/Template.pm
template/en/default/reports/report-table.csv.tmpl

index e4c1bf4608caec4022ccf28f04e0a73eec13a83a..ca467577f37b3b09e7fafc0cbf7b8032c4b81ae5 100644 (file)
@@ -890,10 +890,12 @@ sub create {
             },
 
             # In CSV, quotes are doubled, and any value containing a quote or a
-            # comma is enclosed in quotes.
+            # comma is enclosed in quotes. If a field starts with an equals
+            # sign, it is proceed by a space.
             csv => sub
             {
                 my ($var) = @_;
+                $var = ' ' . $var if substr($var, 0, 1) eq '=';
                 $var =~ s/\"/\"\"/g;
                 if ($var !~ /^-?(\d+\.)?\d*$/) {
                     $var = "\"$var\"";
index e2a92b51d24f053e40b7ef908c0e5d60430d0070..e94014b9222a896bf0dacf8bf6404434ccfc449f 100644 (file)
   [% END %]
   [% tbl_field_disp FILTER csv %]: [% tbl_disp FILTER csv %]
 [% END %]
-[% IF row_field %]
+[% IF row_field && col_field %]
+  [% row_field_disp _ ' / ' _ col_field_disp FILTER csv %]
+[% ELSIF row_field %]
   [% row_field_disp FILTER csv %]
+[% ELSE %]
+  [% col_field_disp FILTER csv %]
 [% END %]
-[% " / " IF col_field AND row_field %]
-[% col_field_disp FILTER csv %]
 [% IF col_field -%]
   [% FOREACH col = col_names -%]
     [% colsepchar %]