From 1e2fedfe9a1ab1e7d32531feb1e25cc5c05edb8c Mon Sep 17 00:00:00 2001 From: Mateusz Gozdek Date: Fri, 1 Feb 2019 23:48:35 +0100 Subject: [PATCH] (MODULES-8584) Handle multiple escaped quotes in comments properly --- lib/puppet/provider/firewall/iptables.rb | 2 +- spec/fixtures/iptables/conversion_hash.rb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/puppet/provider/firewall/iptables.rb b/lib/puppet/provider/firewall/iptables.rb index 9c67411..ce01c28 100644 --- a/lib/puppet/provider/firewall/iptables.rb +++ b/lib/puppet/provider/firewall/iptables.rb @@ -413,7 +413,7 @@ Puppet::Type.type(:firewall).provide :iptables, parent: Puppet::Provider::Firewa # --comment can have multiple values, the same as --match-set if values =~ %r{-m comment --comment} ind = values.index('-m comment --comment') - comments = values.scan(%r{-m comment --comment "(.*?[^\\"])"}) + comments = values.scan(%r{-m comment --comment "((?:\\"|[^"])*)"}) comments += values.scan(%r{-m comment --comment ([^"]+?)\b}) values = values.gsub(%r{-m comment --comment (".*?[^\\"]"|[^ ].*)( |$)}, '') values = values.gsub(%r{-m comment --comment ([^"].*?)[ $]}, '') diff --git a/spec/fixtures/iptables/conversion_hash.rb b/spec/fixtures/iptables/conversion_hash.rb index 166d935..0b4920a 100644 --- a/spec/fixtures/iptables/conversion_hash.rb +++ b/spec/fixtures/iptables/conversion_hash.rb @@ -255,10 +255,10 @@ ARGS_TO_HASH = { }, }, 'string_escape_sequences' => { - line: '-A INPUT -m comment --comment "000 parse escaped \\"s, \\\'s, and \\\\s"', + line: '-A INPUT -m comment --comment "000 parse escaped \\"s, \\"s, \\\'s, \\\'s, \\\\s and \\\\s"', table: 'filter', params: { - name: '000 parse escaped "s, \'s, and \\s', + name: '000 parse escaped "s, "s, \'s, \'s, \\s and \\s', }, }, 'log_level_debug' => { -- 2.45.2