From f56a253539ea5d932eb3c6fc0fdba7f07377ad02 Mon Sep 17 00:00:00 2001 From: Randy Morgan Date: Tue, 26 Jun 2012 22:44:33 +0900 Subject: fixes #105 - disallow control characters. thanks to asakusarb - I found out about [:cntrl:] -- so no more control characters can accidentally get pushed into y our xlsx. --- lib/axlsx/workbook/worksheet/worksheet.rb | 3 +-- test/workbook/worksheet/tc_worksheet.rb | 7 ++----- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/lib/axlsx/workbook/worksheet/worksheet.rb b/lib/axlsx/workbook/worksheet/worksheet.rb index e206720a..0f9f4799 100644 --- a/lib/axlsx/workbook/worksheet/worksheet.rb +++ b/lib/axlsx/workbook/worksheet/worksheet.rb @@ -575,8 +575,7 @@ module Axlsx # [#xAFFFE-#xAFFFF], [#xBFFFE-#xBFFFF], [#xCFFFE-#xCFFFF], # [#xDFFFE-#xDFFFF], [#xEFFFE-#xEFFFF], [#xFFFFE-#xFFFFF], # [#x10FFFE-#x10FFFF]. - # This will crunch 1.8.7 - # str.tr("\u0001-\u0008", '') + str.gsub(/[[:cntrl:]]/,'') end # The worksheet relationships. This is managed automatically by the worksheet diff --git a/test/workbook/worksheet/tc_worksheet.rb b/test/workbook/worksheet/tc_worksheet.rb index 7cc44a52..931ec51b 100644 --- a/test/workbook/worksheet/tc_worksheet.rb +++ b/test/workbook/worksheet/tc_worksheet.rb @@ -308,11 +308,8 @@ class TestWorksheet < Test::Unit::TestCase def test_to_xml_string_with_illegal_chars nasties = "\v\u2028\u0001\u0002\u0003\u0004\u0005\u0006\u0007\u0008\u001f" @ws.add_row [nasties] - assert_equal(nasties, @ws.rows.last.cells.last.value) - schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD)) - doc = Nokogiri::XML(@ws.to_xml_string) - - assert(schema.validate(doc).map { |e| puts e.message; e }.empty?) + assert_equal(0, @ws.rows.last.cells.last.value.index("\v")) + assert_equal(nil,@ws.to_xml_string.index("\v")) end # Make sure the XML for all optional elements (like pageMargins, autoFilter, ...) # is generated in correct order. -- cgit v1.2.3