From d2af7eba57bc520cda6e615495b4872d6f9b2fda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Duarte?= Date: Mon, 18 Dec 2023 14:57:53 +0000 Subject: [PATCH 1/3] escape values starting with +, -, and @ --- lib/logstash/outputs/csv.rb | 2 +- spec/outputs/csv_spec.rb | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/logstash/outputs/csv.rb b/lib/logstash/outputs/csv.rb index 445e575..8857619 100644 --- a/lib/logstash/outputs/csv.rb +++ b/lib/logstash/outputs/csv.rb @@ -66,6 +66,6 @@ def get_value(name, event) private def escape_csv(val) - (spreadsheet_safe && val.is_a?(String) && val.start_with?("=")) ? "'#{val}" : val + (spreadsheet_safe && val.is_a?(String) && val.start_with?(/[=+\-@]/)) ? "'#{val}" : val end end # class LogStash::Outputs::CSV diff --git a/spec/outputs/csv_spec.rb b/spec/outputs/csv_spec.rb index 06213b6..d747639 100644 --- a/spec/outputs/csv_spec.rb +++ b/spec/outputs/csv_spec.rb @@ -139,18 +139,24 @@ let(:event_data) do { "f1" => "1+1", - "f2" => "=1+1" + "f2" => "=1+1", + "f3" => "+1+1", + "f4" => "-1+1", + "f5" => "@1+1" } end let(:events) do [ LogStash::Event.new(event_data) ] end - let(:options) { { "path" => tmpfile, "fields" => ["f1", "f2"] } } + let(:options) { { "path" => tmpfile, "fields" => ["f1", "f2", "f3", "f4", "f5"] } } it "escapes them correctly" do expect(csv_output.size).to eq(1) expect(csv_output[0][0]).to eq("1+1") expect(csv_output[0][1]).to eq("'=1+1") + expect(csv_output[0][2]).to eq("'+1+1") + expect(csv_output[0][3]).to eq("'-1+1") + expect(csv_output[0][4]).to eq("'@1+1") end context "when escaping is turned off" do From 74bb88f1d3ef3c5c37aade8741e9f507b7cfe837 Mon Sep 17 00:00:00 2001 From: logstashmachine <43502315+logstashmachine@users.noreply.github.com> Date: Mon, 18 Dec 2023 19:20:36 +0000 Subject: [PATCH 2/3] bump to 3.0.10 --- CHANGELOG.md | 3 +++ logstash-output-csv.gemspec | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1bb9c4b..8300bb8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +## 3.0.10 + - Extend prefix guard [#27](https://github.com/logstash-plugins/logstash-output-csv/pull/27) + ## 3.0.9 - Fix: updates syntax to JRuby 9.4 [#25](https://github.com/logstash-plugins/logstash-output-csv/pull/25) diff --git a/logstash-output-csv.gemspec b/logstash-output-csv.gemspec index ef8a6f4..6bb5632 100644 --- a/logstash-output-csv.gemspec +++ b/logstash-output-csv.gemspec @@ -1,7 +1,7 @@ Gem::Specification.new do |s| s.name = 'logstash-output-csv' - s.version = '3.0.9' + s.version = '3.0.10' s.licenses = ['Apache License (2.0)'] s.summary = "Writes events to disk in a delimited format" s.description = "This gem is a Logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/logstash-plugin install gemname. This gem is not a stand-alone program" From d41af1f4d3fb1a916aa4d63fb909d5d60c70f40d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Duarte?= Date: Mon, 18 Dec 2023 19:22:41 +0000 Subject: [PATCH 3/3] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8300bb8..44d9208 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,5 @@ ## 3.0.10 - - Extend prefix guard [#27](https://github.com/logstash-plugins/logstash-output-csv/pull/27) + - Extend `spreadsheet_safe` prefix guard to '-', '+', and '@' [#27](https://github.com/logstash-plugins/logstash-output-csv/pull/27) ## 3.0.9 - Fix: updates syntax to JRuby 9.4 [#25](https://github.com/logstash-plugins/logstash-output-csv/pull/25)