[Kimchi-devel] [PATCH] bug fix: Make URI parameter is not None before encoding it
Aline Manera
alinefm at linux.vnet.ibm.com
Wed Feb 26 18:23:54 UTC 2014
On 02/26/2014 04:44 AM, Shu Ming wrote:
> 于 2014/2/26 1:20, Aline Manera 写道:
>> From: Aline Manera <alinefm at br.ibm.com>
>>
>> The following error is raised when the user tried to reboot the host
>> system:
>>
>> Request Headers:
>> AUTHORIZATION: Basic YWxpbmVmbTowaG5lKjI4ZGljSA==
>> Content-Length: 2
>> HOST: localhost:8000
>> Remote-Addr: 127.0.0.1
>> ACCEPT: application/json
>> USER-AGENT: curl/7.27.0
>> Content-Type: application/json
>> [25/Feb/2014:14:05:28] HTTP Traceback (most recent call last):
>> File "/usr/lib/python2.7/dist-packages/cherrypy/_cprequest.py",
>> line 656, in respond
>> response.body = self.handler()
>> File "/usr/lib/python2.7/dist-packages/cherrypy/lib/encoding.py",
>> line 188, in __call__
>> self.body = self.oldhandler(*args, **kwargs)
>> File "/usr/lib/python2.7/dist-packages/cherrypy/_cpdispatch.py",
>> line 34, in __call__
>> return self.callable(*self.args, **self.kwargs)
>> File "/home/alinefm/kimchi/src/kimchi/control/base.py", line 79,
>> in wrapper
>> for arg in self.model_args])
>> AttributeError: 'NoneType' object has no attribute 'encode'
>>
>> It is because /host resource has no parameter and fails to encode() the
>> None value.
>> So fix it by verifying the parameter is not None in order to make the
>> encode() call.
>>
>> Signed-off-by: Aline Manera <alinefm at br.ibm.com>
>> ---
>> src/kimchi/control/base.py | 10 +++++++---
>> 1 file changed, 7 insertions(+), 3 deletions(-)
>>
>> diff --git a/src/kimchi/control/base.py b/src/kimchi/control/base.py
>> index 91a70ae..5d1f380 100644
>> --- a/src/kimchi/control/base.py
>> +++ b/src/kimchi/control/base.py
>> @@ -75,9 +75,13 @@ class Resource(object):
>> fn = getattr(self.model, model_fn(self, action_name))
>> ident = fn(*model_args)
>> self._redirect(ident)
>> - uri_params =
>> tuple([urllib2.quote(arg.encode('utf-8'), safe="")
>> - for arg in self.model_args])
>> - raise internal_redirect(self.uri_fmt % uri_params)
>> + uri_params = []
>> + for arg in self.model_args:
>> + if arg is None:
>> + arg = ''
>> + uri_params.append(urllib2.quote(arg.encode('utf-8'),
>> + safe=""))
>
> You can change the lines above into:
>
> for arg in self.model_args:
> if arg is not None:
> uri_params.append(urllib2.quote(arg.encode('utf-8'),
> safe=""))
ok
>
>
>
>> + raise internal_redirect(self.uri_fmt %
>> tuple(uri_params))
>> except MissingParameter, e:
>> raise cherrypy.HTTPError(400, e.message)
>> except InvalidParameter, e:
>
More information about the Kimchi-devel
mailing list