From 4fd36feed5ec816175bb23bcd919195da351c5c9 Mon Sep 17 00:00:00 2001 From: "lpsolit%gmail.com" Date: Mon, 20 Aug 2007 21:05:45 +0000 Subject: [PATCH] =?UTF-8?q?Bug=20335354:=20editparams.cgi=20crashes=20when?= =?UTF-8?q?=20editing=20the=20'languages'=20and=20'defaultlanguage'=20para?= =?UTF-8?q?meters=20-=20Patch=20by=20Fr=C3=83=C2=A9d=C3=83=C2=A9ric=20Bucl?= =?UTF-8?q?in=20=20r=3Dwurblzap,=20mkanat=20a=3DLpSolit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: svn://10.0.0.236/trunk@232411 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/webtools/bugzilla/Bugzilla/Config/Common.pm | 8 +++++++- mozilla/webtools/bugzilla/Bugzilla/Install/Util.pm | 2 +- mozilla/webtools/bugzilla/Bugzilla/Template.pm | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/mozilla/webtools/bugzilla/Bugzilla/Config/Common.pm b/mozilla/webtools/bugzilla/Bugzilla/Config/Common.pm index 14406019ddb..8435b20a1ae 100644 --- a/mozilla/webtools/bugzilla/Bugzilla/Config/Common.pm +++ b/mozilla/webtools/bugzilla/Bugzilla/Config/Common.pm @@ -305,17 +305,23 @@ sub check_image_converter { } sub check_languages { - my @languages = split /[,\s]+/, trim($_[0]); + my ($lang) = @_; + my @languages = split(/[,\s]+/, trim($lang)); if(!scalar(@languages)) { return "You need to specify a language tag." } my $templatedir = bz_locations()->{'templatedir'}; + my %lang_seen; + my @validated_languages; foreach my $language (@languages) { if( ! -d "$templatedir/$language/custom" && ! -d "$templatedir/$language/default") { return "The template directory for $language does not exist"; } + push(@validated_languages, $language) unless $lang_seen{$language}++; } + # Rebuild the list of language tags, avoiding duplicates. + $_[0] = join(', ', @validated_languages); return ""; } diff --git a/mozilla/webtools/bugzilla/Bugzilla/Install/Util.pm b/mozilla/webtools/bugzilla/Bugzilla/Install/Util.pm index 931d9f1b55f..9bab77a8a76 100644 --- a/mozilla/webtools/bugzilla/Bugzilla/Install/Util.pm +++ b/mozilla/webtools/bugzilla/Bugzilla/Install/Util.pm @@ -127,7 +127,7 @@ sub template_include_path { my @supported; if (defined $params->{use_languages}) { - @supported = $params->{use_languages}; + @supported = @{$params->{use_languages}}; } else { my @dirs = glob(bz_locations()->{'templatedir'} . "/*"); diff --git a/mozilla/webtools/bugzilla/Bugzilla/Template.pm b/mozilla/webtools/bugzilla/Bugzilla/Template.pm index ece95977887..20fe8311256 100644 --- a/mozilla/webtools/bugzilla/Bugzilla/Template.pm +++ b/mozilla/webtools/bugzilla/Bugzilla/Template.pm @@ -87,7 +87,7 @@ sub getTemplateIncludePath { my $cache = Bugzilla->request_cache; my $lang = $cache->{'language'} || ""; $cache->{"template_include_path_$lang"} ||= template_include_path({ - use_languages => trim(Bugzilla->params->{'languages'}), + use_languages => [split(/[\s,]+/, Bugzilla->params->{'languages'})], only_language => $lang }); return $cache->{"template_include_path_$lang"}; }