From 66c5e9e6970b9163e4e25b582c44292b9abd7d7a Mon Sep 17 00:00:00 2001 From: Ivan Kolodyazhny Date: Thu, 14 Jan 2016 19:04:10 +0200 Subject: [PATCH] Base iSCSI initiator validation Validate that iSCSI initiator is string Change-Id: I2309c70e1d937b1897a0e4f85a9255a9abe15169 Closes-Bug: #1534199 --- cinder/tests/unit/test_volume.py | 13 +++++++++++++ cinder/volume/manager.py | 3 +++ 2 files changed, 16 insertions(+) diff --git a/cinder/tests/unit/test_volume.py b/cinder/tests/unit/test_volume.py index adb9c7004..a732b60d4 100644 --- a/cinder/tests/unit/test_volume.py +++ b/cinder/tests/unit/test_volume.py @@ -4280,6 +4280,19 @@ class VolumeTestCase(BaseVolumeTestCase): volume = db.volume_get(context.get_admin_context(), test_vol_id) self.assertEqual('error', volume['status']) + def test__get_driver_initiator_data(self): + manager = vol_manager.VolumeManager() + + data = manager._get_driver_initiator_data(None, {'key': 'val'}) + self.assertIsNone(data) + + connector = {'initiator': {'key': 'val'}} + + self.assertRaises(exception.InvalidInput, + manager._get_driver_initiator_data, + None, + connector) + @ddt.ddt class VolumeMigrationTestCase(VolumeTestCase): diff --git a/cinder/volume/manager.py b/cinder/volume/manager.py index 4797ba925..b5d26a7c4 100644 --- a/cinder/volume/manager.py +++ b/cinder/volume/manager.py @@ -1256,6 +1256,9 @@ class VolumeManager(manager.SchedulerDependentManager): data = None initiator = connector.get('initiator', False) if initiator: + if not isinstance(initiator, six.string_types): + msg = _('Invalid initiator value received') + raise exception.InvalidInput(reason=msg) namespace = self._driver_data_namespace() try: data = self.db.driver_initiator_data_get( -- 2.45.2