diff options
| author | Nick Pope <nick.pope@flightdataservices.com> | 2020-08-19 14:05:05 +0100 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2020-08-24 09:41:21 +0200 |
| commit | b5acb9db751c3e179cdd55398432dfad2c259628 (patch) | |
| tree | e65317383df2ededeaa0dea0745feadafd332fcd /django | |
| parent | 9e04b242eedc42d8d77431ef71ffa5f23eadacdb (diff) | |
Fixed #31907 -- Fixed missing validate_key() calls in cache backends.
Diffstat (limited to 'django')
| -rw-r--r-- | django/core/cache/backends/locmem.py | 1 | ||||
| -rw-r--r-- | django/core/cache/backends/memcached.py | 9 |
2 files changed, 9 insertions, 1 deletions
diff --git a/django/core/cache/backends/locmem.py b/django/core/cache/backends/locmem.py index 2573d14497..72cbc9cefd 100644 --- a/django/core/cache/backends/locmem.py +++ b/django/core/cache/backends/locmem.py @@ -59,6 +59,7 @@ class LocMemCache(BaseCache): def touch(self, key, timeout=DEFAULT_TIMEOUT, version=None): key = self.make_key(key, version=version) + self.validate_key(key) with self._lock: if self._has_expired(key): return False diff --git a/django/core/cache/backends/memcached.py b/django/core/cache/backends/memcached.py index 245366c799..d331642f09 100644 --- a/django/core/cache/backends/memcached.py +++ b/django/core/cache/backends/memcached.py @@ -81,6 +81,7 @@ class BaseMemcachedCache(BaseCache): def touch(self, key, timeout=DEFAULT_TIMEOUT, version=None): key = self.make_key(key, version=version) + self.validate_key(key) return bool(self._cache.touch(key, self.get_backend_timeout(timeout))) def delete(self, key, version=None): @@ -145,7 +146,10 @@ class BaseMemcachedCache(BaseCache): return [original_keys[k] for k in failed_keys] def delete_many(self, keys, version=None): - self._cache.delete_multi(self.make_key(key, version=version) for key in keys) + keys = [self.make_key(key, version=version) for key in keys] + for key in keys: + self.validate_key(key) + self._cache.delete_multi(keys) def clear(self): self._cache.flush_all() @@ -173,6 +177,7 @@ class MemcachedCache(BaseMemcachedCache): def get(self, key, default=None, version=None): key = self.make_key(key, version=version) + self.validate_key(key) val = self._cache.get(key) # python-memcached doesn't support default values in get(). # https://github.com/linsomniac/python-memcached/issues/159 @@ -186,6 +191,7 @@ class MemcachedCache(BaseMemcachedCache): # https://github.com/linsomniac/python-memcached/issues/170 # Call _deletetouch() without the NOT_FOUND in expected results. key = self.make_key(key, version=version) + self.validate_key(key) return bool(self._cache._deletetouch([b'DELETED'], 'delete', key)) @@ -201,6 +207,7 @@ class PyLibMCCache(BaseMemcachedCache): def touch(self, key, timeout=DEFAULT_TIMEOUT, version=None): key = self.make_key(key, version=version) + self.validate_key(key) if timeout == 0: return self._cache.delete(key) return self._cache.touch(key, self.get_backend_timeout(timeout)) |
