liquid 2.5.4 → 2.5.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- M2NmZTM4YmY3NmI3ZmMxZDkxOGU4ZDFjNWNjYTg5ZWE3MzVhMDUzNw==
5
- data.tar.gz: !binary |-
6
- MDY1NTZhOTA3OTA2MDI1ODNkZGIwYzQxZWQ1M2M3ZmE1NmIzNmM5YQ==
2
+ SHA1:
3
+ metadata.gz: 187e926592d08a1fdfe6c92a4438d2a28e3bef15
4
+ data.tar.gz: da01b50919773dac4c35363aecc4d10c991c4ed7
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- MGFjMWY1MjgwMDdiZThkODZjYzEwNWE0NmQ0ZmU1N2YyMWYyYWUxZWI1YTNj
10
- ZmQzNTAwMzMwYTgyODIyMjc2ZWRkMTg2ZmE5MjJjM2NkNDRkNGExNzU1ZjZk
11
- NDQ4NDJjMTU0MWE5OTUwNWMwYzZjYmQyNDMzNmNkZjFmMDgzZjM=
12
- data.tar.gz: !binary |-
13
- MzYzOWExZmQ5ODI2M2IwYmI4NzIwMDc0ZWU3ZjNmN2E4NThlYjczOTNkMGJi
14
- YzRiODRiNWI4ZDFkZGZlYzUwYzNhMzE4MmZmY2M3ODQ0N2M2OTQ0NDA0MGYw
15
- MjVjZmEzYzAzMTc2N2JiNTAyOWIxMjViYWEyNjhjMzI4ZDFjMjY=
6
+ metadata.gz: 0f676eb449b0af41596e80b8f9bbdc76ae101339a2a4cf97d65b1a75a1d9a1bd3ccdeb9787d53f61080d5f7c1c9456e3cec550e5c0d8f4f848d9c27acd7e5d37
7
+ data.tar.gz: c2c869dfd70ef5ecafb1c2095cc513e7b38d1a023bca6fb6ebfebee1374e07c6a3043f52396a55601c60dd71abe90ca6f71c0ff112d250285aaf70d9fe738023
data/History.md CHANGED
@@ -1,6 +1,12 @@
1
1
  # Liquid Version History
2
2
 
3
- ## 2.5.4 / 2013-11-11 / branch "2.5-stable"
3
+ ## 2.5.5 / 2014-01-10 / branch "2-5-stable"
4
+
5
+ Security fix, cherry-picked from master (4e14a65):
6
+ * Don't call to_sym when creating conditions for security reasons, see #273 [Bouke van der Bijl, bouk]
7
+ * Prevent arbitrary method invocation on condition objects, see #274 [Dylan Thacker-Smith, dylanahsmith]
8
+
9
+ ## 2.5.4 / 2013-11-11
4
10
 
5
11
  * Fix "can't convert Fixnum into String" for "replace", see #173, [wǒ_is神仙, jsw0528]
6
12
 
@@ -15,6 +15,7 @@ module Liquid
15
15
  SyntaxHelp = "Syntax Error in tag 'if' - Valid syntax: if [expression]"
16
16
  Syntax = /(#{QuotedFragment})\s*([=!<>a-z_]+)?\s*(#{QuotedFragment})?/o
17
17
  ExpressionsAndOperators = /(?:\b(?:\s?and\s?|\s?or\s?)\b|(?:\s*(?!\b(?:\s?and\s?|\s?or\s?)\b)(?:#{QuotedFragment}|\S+)\s*)+)/o
18
+ BOOLEAN_OPERATORS = %w(and or)
18
19
 
19
20
  def initialize(tag_name, markup, tokens)
20
21
  @blocks = []
@@ -61,7 +62,8 @@ module Liquid
61
62
  raise(SyntaxError, SyntaxHelp) unless expressions.shift.to_s =~ Syntax
62
63
 
63
64
  new_condition = Condition.new($1, $2, $3)
64
- new_condition.send(operator.to_sym, condition)
65
+ raise SyntaxError, "invalid boolean operator" unless BOOLEAN_OPERATORS.include?(operator)
66
+ new_condition.send(operator, condition)
65
67
  condition = new_condition
66
68
  end
67
69
 
@@ -71,8 +73,6 @@ module Liquid
71
73
  @blocks.push(block)
72
74
  @nodelist = block.attach(Array.new)
73
75
  end
74
-
75
-
76
76
  end
77
77
 
78
78
  Template.register_tag('if', If)
@@ -157,4 +157,10 @@ class IfElseTagTest < Test::Unit::TestCase
157
157
  assert_template_result('yes',
158
158
  %({% if 'gnomeslab-and-or-liquid' contains 'gnomeslab-and-or-liquid' %}yes{% endif %}))
159
159
  end
160
+
161
+ def test_operators_are_whitelisted
162
+ assert_raise(SyntaxError) do
163
+ assert_template_result('', %({% if 1 or throw or or 1 %}yes{% endif %}))
164
+ end
165
+ end
160
166
  end # IfElseTest
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: liquid
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.4
4
+ version: 2.5.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tobias Luetke
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-11 00:00:00.000000000 Z
11
+ date: 2014-01-10 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email:
@@ -95,17 +95,17 @@ require_paths:
95
95
  - lib
96
96
  required_ruby_version: !ruby/object:Gem::Requirement
97
97
  requirements:
98
- - - ! '>='
98
+ - - '>='
99
99
  - !ruby/object:Gem::Version
100
100
  version: '0'
101
101
  required_rubygems_version: !ruby/object:Gem::Requirement
102
102
  requirements:
103
- - - ! '>='
103
+ - - '>='
104
104
  - !ruby/object:Gem::Version
105
105
  version: 1.3.7
106
106
  requirements: []
107
107
  rubyforge_project:
108
- rubygems_version: 2.1.6
108
+ rubygems_version: 2.0.3
109
109
  signing_key:
110
110
  specification_version: 4
111
111
  summary: A secure, non-evaling end user template engine with aesthetic markup.