Merge "Reject any filter whose key contains non ascii character"
This commit is contained in:
commit
4bc1e5f6a3
cinder
@ -405,6 +405,20 @@ def convert_filter_attributes(filters, resource):
|
||||
|
||||
def reject_invalid_filters(context, filters, resource,
|
||||
enable_like_filter=False):
|
||||
invalid_filters = []
|
||||
for key in filters.copy().keys():
|
||||
try:
|
||||
# Only ASCII characters can be valid filter keys,
|
||||
# in PY2/3, the key can be either unicode or string.
|
||||
if isinstance(key, str):
|
||||
key.encode('ascii')
|
||||
else:
|
||||
key.decode('ascii')
|
||||
except (UnicodeEncodeError, UnicodeDecodeError):
|
||||
raise webob.exc.HTTPBadRequest(
|
||||
explanation=_('Filter keys can only contain '
|
||||
'ASCII characters.'))
|
||||
|
||||
if context.is_admin and resource not in ['pool']:
|
||||
# Allow all options except resource is pool
|
||||
# pool API is only available for admin
|
||||
@ -415,7 +429,6 @@ def reject_invalid_filters(context, filters, resource,
|
||||
configured_filters = configured_filters[resource]
|
||||
else:
|
||||
configured_filters = []
|
||||
invalid_filters = []
|
||||
for key in filters.copy().keys():
|
||||
if not enable_like_filter:
|
||||
if key not in configured_filters:
|
||||
|
@ -1,3 +1,4 @@
|
||||
# encoding:utf-8
|
||||
# Copyright 2010 OpenStack Foundation
|
||||
# All Rights Reserved.
|
||||
#
|
||||
@ -401,7 +402,17 @@ class GeneralFiltersTest(test.TestCase):
|
||||
'is_admin': True,
|
||||
'result': {'pool': []},
|
||||
'expected': None,
|
||||
'resource': 'pool'})
|
||||
'resource': 'pool'},
|
||||
{'filters': {'中文': 'value1'},
|
||||
'is_admin': True,
|
||||
'result': None,
|
||||
'expected': None,
|
||||
'resource': None},
|
||||
{'filters': {'中文': 'value1'},
|
||||
'is_admin': False,
|
||||
'result': {'fake_resource': []},
|
||||
'expected': None,
|
||||
'resource': 'fake_resource'})
|
||||
@ddt.unpack
|
||||
@mock.patch('cinder.api.common.get_enabled_resource_filters')
|
||||
def test_reject_invalid_filters(self, mock_get, filters,
|
||||
|
Loading…
x
Reference in New Issue
Block a user