From c2f1fdf93105e8956f876048c30d5668f1c5e521 Mon Sep 17 00:00:00 2001 From: Jan Cholasta Date: Feb 08 2013 14:16:48 +0000 Subject: Raise ValidationError on invalid CSV values. https://fedorahosted.org/freeipa/ticket/3323 --- diff --git a/ipalib/parameters.py b/ipalib/parameters.py index c9d0739..be94fe4 100644 --- a/ipalib/parameters.py +++ b/ipalib/parameters.py @@ -694,9 +694,16 @@ class Param(ReadOnly): delimiter=self.csv_separator, quotechar='"', skipinitialspace=self.csv_skipspace, **kwargs) - for row in csv_reader: - # decode UTF-8 back to Unicode, cell by cell: - yield [unicode(cell, 'utf-8') for cell in row] + try: + for row in csv_reader: + # decode UTF-8 back to Unicode, cell by cell: + yield [unicode(cell, 'utf-8') for cell in row] + except csv.Error, e: + raise ValidationError( + name=self.get_param_name(), + value=unicode_csv_data, + error=_("Improperly formatted CSV value (%s)" % e) + ) def split_csv(self, value): """Split CSV strings into individual values. diff --git a/tests/test_ipalib/test_parameters.py b/tests/test_ipalib/test_parameters.py index e6ac91d..3595545 100644 --- a/tests/test_ipalib/test_parameters.py +++ b/tests/test_ipalib/test_parameters.py @@ -631,6 +631,10 @@ class test_Param(ClassChecker): assert type(n) is tuple assert len(n) is 3 + e = raises(ValidationError, o.split_csv, '"a') + assert e.name == 'my_list' + assert e.error == u'Improperly formatted CSV value (newline inside string)' + def test_split_csv_separator(self): """ Test the `ipalib.parameters.Param.split_csv` method with csv and a separator.