gollum 1.1.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of gollum might be problematic. Click here for more details.

data/HISTORY.md CHANGED
@@ -1,3 +1,8 @@
1
+ # 1.1.1 / 2011-1-11
2
+
3
+ * Bug Fixes
4
+ * Critical shell escaping bug with syntax highlighting fixed.
5
+
1
6
  # 1.1.0 / 2010-10-28
2
7
 
3
8
  * Major Enhancements
@@ -4,8 +4,8 @@ Gem::Specification.new do |s|
4
4
  s.rubygems_version = '1.3.5'
5
5
 
6
6
  s.name = 'gollum'
7
- s.version = '1.1.0'
8
- s.date = '2010-10-28'
7
+ s.version = '1.1.1'
8
+ s.date = '2011-01-11'
9
9
  s.rubyforge_project = 'gollum'
10
10
 
11
11
  s.summary = "A simple, Git-powered wiki."
@@ -25,7 +25,7 @@ Gem::Specification.new do |s|
25
25
 
26
26
  s.add_dependency('grit', "~> 2.3")
27
27
  s.add_dependency('github-markup', [">= 0.4.0", "< 1.0.0"])
28
- s.add_dependency('albino', "~> 1.0")
28
+ s.add_dependency('albino', "~> 1.1.1")
29
29
  s.add_dependency('sinatra', "~> 1.0")
30
30
  s.add_dependency('mustache', [">= 0.11.2", "< 1.0.0"])
31
31
  s.add_dependency('sanitize', "~> 1.1")
@@ -20,7 +20,7 @@ require 'gollum/markup'
20
20
  require 'gollum/albino'
21
21
 
22
22
  module Gollum
23
- VERSION = '1.1.0'
23
+ VERSION = '1.1.1'
24
24
 
25
25
  SANITIZATION_OPTIONS = {
26
26
  :elements => [
@@ -14,4 +14,17 @@ class Gollum::Albino < Albino
14
14
  html.sub!(%r{</pre></div>\Z}, "</pre>\n</div>")
15
15
  html
16
16
  end
17
+
18
+ # Hotfix for vulnerable versions of Albino
19
+ if !instance_methods.include?('shell_escape')
20
+ def convert_options(options = {})
21
+ @options.merge(options).inject('') do |string, (flag, value)|
22
+ string + " -#{flag} #{shell_escape value}"
23
+ end
24
+ end
25
+
26
+ def shell_escape(str)
27
+ str.to_s.gsub("'", "\\\\'").gsub(";", '\\;')
28
+ end
29
+ end
17
30
  end
@@ -347,7 +347,7 @@ module Gollum
347
347
  #
348
348
  # Returns the placeholder'd String data.
349
349
  def extract_code(data)
350
- data.gsub(/^``` ?(.+?)\r?\n(.+?)\r?\n```\r?$/m) do
350
+ data.gsub(/^``` ?([^\r\n]+)?\r?\n(.+?)\r?\n```\r?$/m) do
351
351
  id = Digest::SHA1.hexdigest($2)
352
352
  @codemap[id] = { :lang => $1, :code => $2 }
353
353
  id
@@ -362,12 +362,15 @@ module Gollum
362
362
  # Returns the marked up String data.
363
363
  def process_code(data)
364
364
  @codemap.each do |id, spec|
365
- lang = spec[:lang]
366
365
  code = spec[:code]
367
366
  if code.lines.all? { |line| line =~ /\A\r?\n\Z/ || line =~ /^( |\t)/ }
368
367
  code.gsub!(/^( |\t)/m, '')
369
368
  end
370
- data.gsub!(id, Gollum::Albino.new(code, lang).colorize)
369
+ if lang = spec[:lang]
370
+ data.gsub!(id, Gollum::Albino.new(code, lang).colorize)
371
+ else
372
+ data.gsub!(id, "<pre><code>#{CGI.escapeHTML(code)}</code></pre>")
373
+ end
371
374
  end
372
375
  data
373
376
  end
@@ -353,6 +353,18 @@ context "Markup" do
353
353
  compare(content, output)
354
354
  end
355
355
 
356
+ test "code block with invalid lang" do
357
+ content = "a\n\n``` ls -al;\n\tbooya\n\tboom\n```\n\nb"
358
+ output = "<p>a</p>\n\n\n\n<p>b</p>"
359
+ compare(content, output)
360
+ end
361
+
362
+ test "code block with no lang" do
363
+ content = "a\n\n```\n\tls -al;\n\t<booya>\n```\n\nb"
364
+ output = "<p>a</p>\n\n<pre><code>ls -al;\n&lt;booya&gt;</code></pre>\n\n<p>b</p>"
365
+ compare(content, output)
366
+ end
367
+
356
368
  #########################################################################
357
369
  #
358
370
  # Various
metadata CHANGED
@@ -1,13 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gollum
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
5
4
  prerelease: false
6
5
  segments:
7
6
  - 1
8
7
  - 1
9
- - 0
10
- version: 1.1.0
8
+ - 1
9
+ version: 1.1.1
11
10
  platform: ruby
12
11
  authors:
13
12
  - Tom Preston-Werner
@@ -16,18 +15,16 @@ autorequire:
16
15
  bindir: bin
17
16
  cert_chain: []
18
17
 
19
- date: 2010-10-28 00:00:00 -07:00
18
+ date: 2011-01-11 00:00:00 -08:00
20
19
  default_executable: gollum
21
20
  dependencies:
22
21
  - !ruby/object:Gem::Dependency
23
22
  name: grit
24
23
  prerelease: false
25
24
  requirement: &id001 !ruby/object:Gem::Requirement
26
- none: false
27
25
  requirements:
28
26
  - - ~>
29
27
  - !ruby/object:Gem::Version
30
- hash: 5
31
28
  segments:
32
29
  - 2
33
30
  - 3
@@ -38,11 +35,9 @@ dependencies:
38
35
  name: github-markup
39
36
  prerelease: false
40
37
  requirement: &id002 !ruby/object:Gem::Requirement
41
- none: false
42
38
  requirements:
43
39
  - - ">="
44
40
  - !ruby/object:Gem::Version
45
- hash: 15
46
41
  segments:
47
42
  - 0
48
43
  - 4
@@ -50,7 +45,6 @@ dependencies:
50
45
  version: 0.4.0
51
46
  - - <
52
47
  - !ruby/object:Gem::Version
53
- hash: 23
54
48
  segments:
55
49
  - 1
56
50
  - 0
@@ -62,26 +56,23 @@ dependencies:
62
56
  name: albino
63
57
  prerelease: false
64
58
  requirement: &id003 !ruby/object:Gem::Requirement
65
- none: false
66
59
  requirements:
67
60
  - - ~>
68
61
  - !ruby/object:Gem::Version
69
- hash: 15
70
62
  segments:
71
63
  - 1
72
- - 0
73
- version: "1.0"
64
+ - 1
65
+ - 1
66
+ version: 1.1.1
74
67
  type: :runtime
75
68
  version_requirements: *id003
76
69
  - !ruby/object:Gem::Dependency
77
70
  name: sinatra
78
71
  prerelease: false
79
72
  requirement: &id004 !ruby/object:Gem::Requirement
80
- none: false
81
73
  requirements:
82
74
  - - ~>
83
75
  - !ruby/object:Gem::Version
84
- hash: 15
85
76
  segments:
86
77
  - 1
87
78
  - 0
@@ -92,11 +83,9 @@ dependencies:
92
83
  name: mustache
93
84
  prerelease: false
94
85
  requirement: &id005 !ruby/object:Gem::Requirement
95
- none: false
96
86
  requirements:
97
87
  - - ">="
98
88
  - !ruby/object:Gem::Version
99
- hash: 55
100
89
  segments:
101
90
  - 0
102
91
  - 11
@@ -104,7 +93,6 @@ dependencies:
104
93
  version: 0.11.2
105
94
  - - <
106
95
  - !ruby/object:Gem::Version
107
- hash: 23
108
96
  segments:
109
97
  - 1
110
98
  - 0
@@ -116,11 +104,9 @@ dependencies:
116
104
  name: sanitize
117
105
  prerelease: false
118
106
  requirement: &id006 !ruby/object:Gem::Requirement
119
- none: false
120
107
  requirements:
121
108
  - - ~>
122
109
  - !ruby/object:Gem::Version
123
- hash: 13
124
110
  segments:
125
111
  - 1
126
112
  - 1
@@ -131,11 +117,9 @@ dependencies:
131
117
  name: nokogiri
132
118
  prerelease: false
133
119
  requirement: &id007 !ruby/object:Gem::Requirement
134
- none: false
135
120
  requirements:
136
121
  - - ~>
137
122
  - !ruby/object:Gem::Version
138
- hash: 7
139
123
  segments:
140
124
  - 1
141
125
  - 4
@@ -146,11 +130,9 @@ dependencies:
146
130
  name: RedCloth
147
131
  prerelease: false
148
132
  requirement: &id008 !ruby/object:Gem::Requirement
149
- none: false
150
133
  requirements:
151
134
  - - ">="
152
135
  - !ruby/object:Gem::Version
153
- hash: 3
154
136
  segments:
155
137
  - 0
156
138
  version: "0"
@@ -160,11 +142,9 @@ dependencies:
160
142
  name: mocha
161
143
  prerelease: false
162
144
  requirement: &id009 !ruby/object:Gem::Requirement
163
- none: false
164
145
  requirements:
165
146
  - - ">="
166
147
  - !ruby/object:Gem::Version
167
- hash: 3
168
148
  segments:
169
149
  - 0
170
150
  version: "0"
@@ -174,11 +154,9 @@ dependencies:
174
154
  name: org-ruby
175
155
  prerelease: false
176
156
  requirement: &id010 !ruby/object:Gem::Requirement
177
- none: false
178
157
  requirements:
179
158
  - - ">="
180
159
  - !ruby/object:Gem::Version
181
- hash: 3
182
160
  segments:
183
161
  - 0
184
162
  version: "0"
@@ -188,11 +166,9 @@ dependencies:
188
166
  name: rdiscount
189
167
  prerelease: false
190
168
  requirement: &id011 !ruby/object:Gem::Requirement
191
- none: false
192
169
  requirements:
193
170
  - - ">="
194
171
  - !ruby/object:Gem::Version
195
- hash: 3
196
172
  segments:
197
173
  - 0
198
174
  version: "0"
@@ -202,11 +178,9 @@ dependencies:
202
178
  name: shoulda
203
179
  prerelease: false
204
180
  requirement: &id012 !ruby/object:Gem::Requirement
205
- none: false
206
181
  requirements:
207
182
  - - ">="
208
183
  - !ruby/object:Gem::Version
209
- hash: 3
210
184
  segments:
211
185
  - 0
212
186
  version: "0"
@@ -700,27 +674,23 @@ rdoc_options:
700
674
  require_paths:
701
675
  - lib
702
676
  required_ruby_version: !ruby/object:Gem::Requirement
703
- none: false
704
677
  requirements:
705
678
  - - ">="
706
679
  - !ruby/object:Gem::Version
707
- hash: 3
708
680
  segments:
709
681
  - 0
710
682
  version: "0"
711
683
  required_rubygems_version: !ruby/object:Gem::Requirement
712
- none: false
713
684
  requirements:
714
685
  - - ">="
715
686
  - !ruby/object:Gem::Version
716
- hash: 3
717
687
  segments:
718
688
  - 0
719
689
  version: "0"
720
690
  requirements: []
721
691
 
722
692
  rubyforge_project: gollum
723
- rubygems_version: 1.3.7
693
+ rubygems_version: 1.3.6
724
694
  signing_key:
725
695
  specification_version: 2
726
696
  summary: A simple, Git-powered wiki.