diff options
-rw-r--r-- | Bugzilla/Memcached.pm | 61 | ||||
-rw-r--r-- | META.json | 4 | ||||
-rw-r--r-- | META.yml | 4 | ||||
-rw-r--r-- | Makefile.PL | 2 |
4 files changed, 11 insertions, 60 deletions
diff --git a/Bugzilla/Memcached.pm b/Bugzilla/Memcached.pm index 1339a119c..cdadf4601 100644 --- a/Bugzilla/Memcached.pm +++ b/Bugzilla/Memcached.pm @@ -12,7 +12,6 @@ use strict; use warnings; use Bugzilla::Error; -use Bugzilla::Util qw(trick_taint); use Scalar::Util qw(blessed); use URI::Escape; use Encode; @@ -30,13 +29,11 @@ sub _new { # disabled. my $servers = Bugzilla->get_param_with_override('memcached_servers'); if (Bugzilla->feature('memcached') && $servers) { - require Cache::Memcached; $self->{namespace} = Bugzilla->get_param_with_override('memcached_namespace'); - $self->{memcached} = - Cache::Memcached->new({ - servers => [ split(/[, ]+/, $servers) ], - namespace => $self->{namespace}, - }); + $self->{memcached} = Cache::Memcached::Fast->new({ + servers => [ split(/[, ]+/, $servers) ], + namespace => $self->{namespace}, + }); } return bless($self, $class); } @@ -249,51 +246,7 @@ sub _get { $key = $self->_encode_key($key) or return; - my $value = $self->{memcached}->get($key); - return unless defined $value; - - # detaint returned values - # hashes and arrays are detainted just one level deep - if (ref($value) eq 'HASH') { - _detaint_hashref($value); - } - elsif (ref($value) eq 'ARRAY') { - foreach my $value (@$value) { - next unless defined $value; - # arrays of hashes and arrays are common - if (ref($value) eq 'HASH') { - _detaint_hashref($value); - } - elsif (ref($value) eq 'ARRAY') { - _detaint_arrayref($value); - } - elsif (!ref($value)) { - trick_taint($value); - } - } - } - elsif (!ref($value)) { - trick_taint($value); - } - return $value; -} - -sub _detaint_hashref { - my ($hashref) = @_; - foreach my $value (values %$hashref) { - if (defined($value) && !ref($value)) { - trick_taint($value); - } - } -} - -sub _detaint_arrayref { - my ($arrayref) = @_; - foreach my $value (@$arrayref) { - if (defined($value) && !ref($value)) { - trick_taint($value); - } - } + return $self->{memcached}->get($key); } sub _delete { @@ -346,9 +299,7 @@ L<Bugzilla::Memcached> provides an interface to a Memcached server/servers, with the ability to get, set, or clear entries from the cache. The stored value must be an unblessed hashref, unblessed array ref, or a -scalar. Currently nested data structures are supported but require manual -de-tainting after reading from Memcached (flat data structures are automatically -de-tainted). +scalar. All values are stored in the Memcached systems using the prefix configured with the C<memcached_namespace> parameter, as well as an additional prefix managed @@ -56,7 +56,7 @@ "runtime" : { "requires" : { "Auth::GoogleAuth" : "1.01", - "Cache::Memcached" : "0.17", + "Cache::Memcached::Fast" : "0.17", "Chart::Lines" : "v2.4.10", "DBD::mysql" : "4.037", "Daemon::Generic" : "0", @@ -217,7 +217,7 @@ "prereqs" : { "runtime" : { "requires" : { - "Cache::Memcached" : "0.17" + "Cache::Memcached::Fast" : "0.17" } } } @@ -37,7 +37,7 @@ optional_features: description: 'features that bmo needs' requires: Auth::GoogleAuth: '1.01' - Cache::Memcached: '0.17' + Cache::Memcached::Fast: '0.17' Chart::Lines: v2.4.10 DBD::mysql: '4.037' Daemon::Generic: '0' @@ -126,7 +126,7 @@ optional_features: memcached: description: 'Memcached Support' requires: - Cache::Memcached: '0.17' + Cache::Memcached::Fast: '0.17' mfa: description: 'Multi-Factor Authentication' requires: diff --git a/Makefile.PL b/Makefile.PL index f3b03f0db..a84aa1cdf 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -120,7 +120,7 @@ my %optional_features = ( memcached => { description => 'Memcached Support', prereqs => { - runtime => { requires => { 'Cache::Memcached' => '0.17' } } + runtime => { requires => { 'Cache::Memcached::Fast' => '0.17' } } } }, auth_delegation => { |