BigW Consortium Gitlab
Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gitlab-ce
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Forest Godfrey
gitlab-ce
Commits
ff65e556
Commit
ff65e556
authored
Dec 12, 2014
by
Dmitriy Zaporozhets
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'sanitize-snippet-file-name' into 'master'
Validate and sanitize snippet file name Fixes #1816 See merge request !1322
parents
b205db63
bfebab1c
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
16 additions
and
6 deletions
+16
-6
snippets_controller.rb
app/controllers/projects/snippets_controller.rb
+1
-1
snippets_controller.rb
app/controllers/snippets_controller.rb
+1
-1
snippet.rb
app/models/snippet.rb
+8
-2
factories.rb
spec/factories.rb
+6
-2
No files found.
app/controllers/projects/snippets_controller.rb
View file @
ff65e556
...
@@ -68,7 +68,7 @@ class Projects::SnippetsController < Projects::ApplicationController
...
@@ -68,7 +68,7 @@ class Projects::SnippetsController < Projects::ApplicationController
@snippet
.
content
,
@snippet
.
content
,
type:
'text/plain; charset=utf-8'
,
type:
'text/plain; charset=utf-8'
,
disposition:
'inline'
,
disposition:
'inline'
,
filename:
@snippet
.
file_name
filename:
@snippet
.
sanitized_
file_name
)
)
end
end
...
...
app/controllers/snippets_controller.rb
View file @
ff65e556
...
@@ -79,7 +79,7 @@ class SnippetsController < ApplicationController
...
@@ -79,7 +79,7 @@ class SnippetsController < ApplicationController
@snippet
.
content
,
@snippet
.
content
,
type:
'text/plain; charset=utf-8'
,
type:
'text/plain; charset=utf-8'
,
disposition:
'inline'
,
disposition:
'inline'
,
filename:
@snippet
.
file_name
filename:
@snippet
.
sanitized_
file_name
)
)
end
end
...
...
app/models/snippet.rb
View file @
ff65e556
...
@@ -29,7 +29,9 @@ class Snippet < ActiveRecord::Base
...
@@ -29,7 +29,9 @@ class Snippet < ActiveRecord::Base
validates
:author
,
presence:
true
validates
:author
,
presence:
true
validates
:title
,
presence:
true
,
length:
{
within:
0
..
255
}
validates
:title
,
presence:
true
,
length:
{
within:
0
..
255
}
validates
:file_name
,
presence:
true
,
length:
{
within:
0
..
255
}
validates
:file_name
,
presence:
true
,
length:
{
within:
0
..
255
},
format:
{
with:
Gitlab
::
Regex
.
path_regex
,
message:
Gitlab
::
Regex
.
path_regex_message
}
validates
:content
,
presence:
true
validates
:content
,
presence:
true
validates
:visibility_level
,
inclusion:
{
in:
Gitlab
::
VisibilityLevel
.
values
}
validates
:visibility_level
,
inclusion:
{
in:
Gitlab
::
VisibilityLevel
.
values
}
...
@@ -62,6 +64,10 @@ class Snippet < ActiveRecord::Base
...
@@ -62,6 +64,10 @@ class Snippet < ActiveRecord::Base
file_name
file_name
end
end
def
sanitized_file_name
file_name
.
gsub
(
/[^a-zA-Z0-9_\-\.]+/
,
''
)
end
def
mode
def
mode
nil
nil
end
end
...
@@ -72,7 +78,7 @@ class Snippet < ActiveRecord::Base
...
@@ -72,7 +78,7 @@ class Snippet < ActiveRecord::Base
def
visibility_level_field
def
visibility_level_field
visibility_level
visibility_level
end
end
class
<<
self
class
<<
self
def
search
(
query
)
def
search
(
query
)
...
...
spec/factories.rb
View file @
ff65e556
...
@@ -5,10 +5,14 @@ FactoryGirl.define do
...
@@ -5,10 +5,14 @@ FactoryGirl.define do
Faker
::
Lorem
.
sentence
Faker
::
Lorem
.
sentence
end
end
sequence
:name
,
aliases:
[
:file_name
]
do
sequence
:name
do
Faker
::
Name
.
name
Faker
::
Name
.
name
end
end
sequence
:file_name
do
Faker
::
Internet
.
user_name
end
sequence
(
:url
)
{
Faker
::
Internet
.
uri
(
'http'
)
}
sequence
(
:url
)
{
Faker
::
Internet
.
uri
(
'http'
)
}
factory
:user
,
aliases:
[
:author
,
:assignee
,
:owner
,
:creator
]
do
factory
:user
,
aliases:
[
:author
,
:assignee
,
:owner
,
:creator
]
do
...
@@ -18,7 +22,7 @@ FactoryGirl.define do
...
@@ -18,7 +22,7 @@ FactoryGirl.define do
password
"12345678"
password
"12345678"
password_confirmation
{
password
}
password_confirmation
{
password
}
confirmed_at
{
Time
.
now
}
confirmed_at
{
Time
.
now
}
confirmation_token
{
nil
}
confirmation_token
{
nil
}
trait
:admin
do
trait
:admin
do
admin
true
admin
true
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment