summaryrefslogtreecommitdiffstats
path: root/nova/api
diff options
context:
space:
mode:
authorTushar Patil <tushar.vitthal.patil@gmail.com>2011-08-31 23:50:08 +0000
committerTarmac <>2011-08-31 23:50:08 +0000
commit3bc7a44dad3233595beb20b63204f16f1cb4376e (patch)
tree1625bb9b06181444e1b3df0708046155c174511e /nova/api
parent3fa7bf7cc4dece3662cf31e8fb0b6daa7df54f8b (diff)
parent476101d81cf81e6035b44e2257c1bcd8e958043a (diff)
downloadnova-3bc7a44dad3233595beb20b63204f16f1cb4376e.tar.gz
nova-3bc7a44dad3233595beb20b63204f16f1cb4376e.tar.xz
nova-3bc7a44dad3233595beb20b63204f16f1cb4376e.zip
Validates that user-data is b64 encoded.
Diffstat (limited to 'nova/api')
-rw-r--r--nova/api/openstack/create_instance_helper.py13
1 files changed, 13 insertions, 0 deletions
diff --git a/nova/api/openstack/create_instance_helper.py b/nova/api/openstack/create_instance_helper.py
index 483ff4985..019283fdf 100644
--- a/nova/api/openstack/create_instance_helper.py
+++ b/nova/api/openstack/create_instance_helper.py
@@ -138,7 +138,10 @@ class CreateInstanceHelper(object):
raise exc.HTTPBadRequest(explanation=msg)
zone_blob = server_dict.get('blob')
+
user_data = server_dict.get('user_data')
+ self._validate_user_data(user_data)
+
availability_zone = server_dict.get('availability_zone')
name = server_dict['name']
self._validate_server_name(name)
@@ -370,6 +373,16 @@ class CreateInstanceHelper(object):
return networks
+ def _validate_user_data(self, user_data):
+ """Check if the user_data is encoded properly"""
+ if not user_data:
+ return
+ try:
+ user_data = base64.b64decode(user_data)
+ except TypeError:
+ expl = _('Userdata content cannot be decoded')
+ raise exc.HTTPBadRequest(explanation=expl)
+
class ServerXMLDeserializer(wsgi.XMLDeserializer):
"""