Invalid JSON in a v2 body returns a 500

Bug #1288456 reported by Vinod Mangalpally
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Designate
Fix Released
Critical
Vinod Mangalpally
Icehouse
Fix Released
Critical
Vinod Mangalpally

Bug Description

Posting an invalid JSON for a URL like /v2/zones as below
{
  "zone" : {
    "name" : "hp.com",
  }
}

results in a 500.
With a v1 url this returns a 400.

ERROR designate.api.middleware [req-6b494ed0-7699-414b-950b-5de81162142a noauth-user noauth-project - - -] Expecting property name: line 4 column 3 (char 40)
TRACE designate.api.middleware Traceback (most recent call last):
TRACE designate.api.middleware File "/home/vagrant/designate/designate_src/designate/api/middleware.py", line 193, in __call__
TRACE designate.api.middleware return request.get_response(self.application)
TRACE designate.api.middleware File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1320, in send
TRACE designate.api.middleware application, catch_exc_info=False)
TRACE designate.api.middleware File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1284, in call_application
TRACE designate.api.middleware app_iter = application(self.environ, start_response)
TRACE designate.api.middleware File "/usr/local/lib/python2.7/dist-packages/pecan/middleware/recursive.py", line 56, in __call__
TRACE designate.api.middleware return self.application(environ, start_response)
TRACE designate.api.middleware File "/usr/local/lib/python2.7/dist-packages/pecan/core.py", line 570, in __call__
TRACE designate.api.middleware self.handle_request(req, resp)
TRACE designate.api.middleware File "/usr/local/lib/python2.7/dist-packages/pecan/core.py", line 508, in handle_request
TRACE designate.api.middleware result = controller(*args, **kwargs)
TRACE designate.api.middleware File "/home/vagrant/designate/designate_src/designate/api/v2/controllers/zones.py", line 128, in post_all
TRACE designate.api.middleware return self._post_json(request, response, context)
TRACE designate.api.middleware File "/home/vagrant/designate/designate_src/designate/api/v2/controllers/zones.py", line 135, in _post_json
TRACE designate.api.middleware body = request.body_dict
TRACE designate.api.middleware File "/usr/local/lib/python2.7/dist-packages/pecan/core.py", line 35, in __getattr__
TRACE designate.api.middleware return getattr(obj, attr)
TRACE designate.api.middleware File "/home/vagrant/designate/designate_src/designate/api/v2/patches.py", line 35, in body_dict
TRACE designate.api.middleware return jsonutils.load(self.body_file)
TRACE designate.api.middleware File "/home/vagrant/designate/designate_src/designate/openstack/common/jsonutils.py", line 172, in load
TRACE designate.api.middleware return json.load(s)
TRACE designate.api.middleware File "/usr/lib/python2.7/json/__init__.py", line 278, in load
TRACE designate.api.middleware **kw)
TRACE designate.api.middleware File "/usr/lib/python2.7/json/__init__.py", line 326, in loads
TRACE designate.api.middleware return _default_decoder.decode(s)
TRACE designate.api.middleware File "/usr/lib/python2.7/json/decoder.py", line 365, in decode
TRACE designate.api.middleware obj, end = self.raw_decode(s, idx=_w(s, 0).end())
TRACE designate.api.middleware File "/usr/lib/python2.7/json/decoder.py", line 381, in raw_decode
TRACE designate.api.middleware obj, end = self.scan_once(s, idx)

Changed in designate:
importance: Undecided → Critical
milestone: none → icehouse-3
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to designate (master)

Fix proposed to branch: master
Review: https://review.openstack.org/78487

Changed in designate:
assignee: nobody → Vinod Mangalpally (vinod-mang)
status: New → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to designate (master)

Reviewed: https://review.openstack.org/78487
Committed: https://git.openstack.org/cgit/stackforge/designate/commit/?id=877055aca77cc17f701fb2f6665cdd6ef420337f
Submitter: Jenkins
Branch: master

commit 877055aca77cc17f701fb2f6665cdd6ef420337f
Author: Vinod Mangalpally <email address hidden>
Date: Wed Mar 5 18:58:17 2014 -0600

    Return 400 for invalid Json for api v2

    For invalid json, a ValueError is returned by python's json decoder.
    On v2, we now catch this and return a 400 (invalid_json)

    Change-Id: Idb76f051c6d09d5fd26f0a44fa75a0ffd9f37b6a
    Closes-Bug: #1288456

Changed in designate:
status: In Progress → Fix Committed
Kiall Mac Innes (kiall)
Changed in designate:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.