From 35ab6edd00ca83a947f1d8eea970584655e8524b Mon Sep 17 00:00:00 2001 From: Chris Behrens Date: Fri, 27 Jul 2012 07:04:58 +0000 Subject: [PATCH] Sanitize xenstore keys for metadata injection Xenstore only allows certain characters in key names. Change disallowed characters as well as '/' to '_'. Fixes bug 1029773 Change-Id: I04055bfbe662f3f3e9d90336d03670aa5468e780 --- nova/tests/test_xenapi.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/nova/tests/test_xenapi.py b/nova/tests/test_xenapi.py index 61a4c8149..47a6bfcc6 100644 --- a/nova/tests/test_xenapi.py +++ b/nova/tests/test_xenapi.py @@ -2256,7 +2256,10 @@ class XenAPIInjectMetadataTestCase(stubs.XenAPITestBase): # to xenstore instance = dict(metadata=[FakeMetaItem("a", 1), FakeMetaItem("b", 2), - FakeMetaItem("c", 3)], + FakeMetaItem("c", 3), + # Check xenstore key sanitizing + FakeMetaItem("hi.there", 4), + FakeMetaItem("hi!t.e/e", 5)], system_metadata=[FakeMetaItem("sys_a", 1), FakeMetaItem("sys_b", 2), FakeMetaItem("sys_c", 3)]) @@ -2267,12 +2270,15 @@ class XenAPIInjectMetadataTestCase(stubs.XenAPITestBase): 'vm-data/user-metadata/a': '1', 'vm-data/user-metadata/b': '2', 'vm-data/user-metadata/c': '3', + 'vm-data/user-metadata/hi_there': '4', + 'vm-data/user-metadata/hi_t_e_e': '5', }, 'ephem': {}, }) def test_change_instance_metadata_add(self): - diff = dict(d=['+', 4]) + # Test XenStore key sanitizing here, too. + diff = {'test.key': ['+', 4]} self.xenstore = { 'persist': { 'vm-data/user-metadata/a': '1', @@ -2293,13 +2299,13 @@ class XenAPIInjectMetadataTestCase(stubs.XenAPITestBase): 'vm-data/user-metadata/a': '1', 'vm-data/user-metadata/b': '2', 'vm-data/user-metadata/c': '3', - 'vm-data/user-metadata/d': '4', + 'vm-data/user-metadata/test_key': '4', }, 'ephem': { 'vm-data/user-metadata/a': '1', 'vm-data/user-metadata/b': '2', 'vm-data/user-metadata/c': '3', - 'vm-data/user-metadata/d': '4', + 'vm-data/user-metadata/test_key': '4', }, })