From: Don Armstrong Date: Sat, 26 Apr 2008 06:49:25 +0000 (-0700) Subject: * Add invalid_version template X-Git-Tag: release/2.6.0~490^2 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;ds=sidebyside;h=77e237d678042b9aa73d1771d35ce72c2c6c2682;p=debbugs.git * Add invalid_version template * Relax notfound and notfixed version regex * Check for version regex in process.in pseudoheaders --- diff --git a/scripts/process.in b/scripts/process.in index deaadf2..2de3562 100755 --- a/scripts/process.in +++ b/scripts/process.in @@ -357,10 +357,24 @@ if ($codeletter eq 'D' || $codeletter eq 'F') $data->{keywords} = join ' ', grep $_ ne 'pending', split ' ', $data->{keywords}; if (defined $pheader{'source-version'}) { - addfixedversions($data, $pheader{source}, $pheader{'source-version'}, ''); - } elsif (defined $pheader{version}) { - addfixedversions($data, $pheader{package}, $pheader{version}, 'binary'); - } + if ($pheader{'source-version'} !~ m/^$config{package_version_re}$/) { + $brokenness .= fill_template('mail/invalid_version', + {version => $pheader{'source-version'}}, + ); + } + else { + addfixedversions($data, $pheader{source}, $pheader{'source-version'}, ''); + } + } elsif (defined $pheader{version}) { + if ($pheader{version} !~ m/^$config{package_version_re}$/) { + $brokenness .= fill_template('mail/invalid_version', + {version => $pheader{version}}, + ); + } + else { + addfixedversions($data, $pheader{package}, $pheader{version}, ''); + } + } } # Add bug mailing list to $generalbcc as appropriate @@ -644,15 +658,38 @@ if (defined $pheader{source}) { # appear that way in version trees so that we can deal with binary # packages moving from one source package to another. if (defined $pheader{'source-version'}) { - addfoundversions($data, $pheader{source}, $pheader{'source-version'}, ''); + if ($pheader{'source-version'} !~ m/^$config{package_version_re}$/) { + $brokenness .= fill_template('mail/invalid_version', + {version => $pheader{'source-version'}}, + ); + } + else { + addfoundversions($data, $pheader{source}, $pheader{'source-version'}, ''); + } } elsif (defined $pheader{version}) { - addfoundversions($data, $pheader{source}, $pheader{version}, ''); + if ($pheader{version} !~ m/^$config{package_version_re}$/) { + $brokenness .= fill_template('mail/invalid_version', + {version => $pheader{version}}, + ); + } + else { + addfoundversions($data, $pheader{source}, $pheader{version}, ''); + } } writebug($ref, $data); } elsif (defined $pheader{package}) { # TODO: could handle Source-Version: by looking up the source package? - addfoundversions($data, $pheader{package}, $pheader{version}, 'binary'); - writebug($ref, $data); + if (defined $pheader{version}) { + if ($pheader{version} !~ m/^$config{package_version_re}$/) { + $brokenness .= fill_template('mail/invalid_version', + {version => $pheader{version}}, + ); + } + else { + addfoundversions($data, $pheader{package}, $pheader{version}, 'binary'); + } + } + writebug($ref, $data); } my $veryquiet= $codeletter eq 'Q'; diff --git a/scripts/service.in b/scripts/service.in index 943c883..1cf8460 100755 --- a/scripts/service.in +++ b/scripts/service.in @@ -580,9 +580,9 @@ END } while (&getnextbug); } } - } elsif (m[^notfound\s+\#?(-?\d+) - (?:\s+(?:$config{package_name_re}\/)? - ($config{package_version_re}))$]ix) { + } elsif (m[^notfound\s+\#?(-?\d+)\s+ + ((?:$config{package_name_re}\/)? + \S+)\s*$]ix) { $ok++; $ref= $1; $version= $2; @@ -616,7 +616,7 @@ END } elsif (m[^notfixed\s+\#?(-?\d+)\s+ ((?:$config{package_name_re}\/)? - $config{package_version_re})\s*$]ix) { + \S+)\s*$]ix) { $ok++; $ref= $1; $version= $2; diff --git a/templates/en_US/mail/invalid_version.tmpl b/templates/en_US/mail/invalid_version.tmpl new file mode 100644 index 0000000..1bddeab --- /dev/null +++ b/templates/en_US/mail/invalid_version.tmpl @@ -0,0 +1,9 @@ + +Your message had a Version: pseudo-header with an invalid package +version: + +{$version} + +please either use found or fixed to the control server with a correct +version, or reply to this report indicating the correct version so the +maintainer (or someone else) can correct it for you.