Skip to content

Commit 7a5fb58

Browse files
committed
Closed vulnerability in render path
1 parent b353c34 commit 7a5fb58

File tree

4 files changed

+18
-17
lines changed

4 files changed

+18
-17
lines changed

app/controllers/networks_controller.rb

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,13 @@ def create
2525
end
2626

2727
def index
28+
@index_networks_params = params.permit(:sort, :action)
29+
2830
@networks = Rails.cache.fetch('all_networks', expires_in: 1.day) { Network.all }
29-
if params[:sort] == 'upvotes'
31+
if @index_networks_params[:sort] == 'upvotes'
3032
Rails.cache.fetch('networks_by_upvotes', expires_in: 12.hours) { @networks.sort_by! { |network| -network.upvotes } }
31-
elsif params[:sort] == 'newmembers'
33+
elsif @index_networks_params[:sort] == 'newmembers'
3234
Rails.cache.fetch('networks_by_member_count', expires_in: 1.day) { @networks.sort_by! { |network| -network.new_members.count } }
33-
#elsif params[:sort] == 'new'
34-
# @networks.sort_by(&:recent_protips_count)
3535
end
3636
end
3737

@@ -208,4 +208,4 @@ def redirect_to_search
208208
tags = tags.map { |tag| "##{tag}" }.join(" ")
209209
redirect_to protips_path(search: tags, show_all: params[:show_all])
210210
end
211-
end
211+
end

app/controllers/teams_controller.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ def edit
102102
def update
103103
update_params = params.permit(:id, :_id, :job_id, :slug)
104104
update_team_params = params.require(:team).permit!
105+
@section_id = (params.permit(:section_id) || {})[:section_id]
105106

106107
@team = Team.find(update_params[:id])
107108
return head(:forbidden) unless current_user.belongs_to_team?(@team) || current_user.admin?

app/views/networks/index.html.haml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
1-
-content_for :mixpanel do
2-
= record_event('viewed networks page', sort: (params[:sort] || :default))
1+
- content_for :mixpanel do
2+
= record_event('viewed networks page', sort: (@index_networks_params[[:sort] || :default))
33

44
= content_for :body_id do
55
protip-multiple
66

77
= content_for :content_wrapper do
88
= false
99

10-
=content_for :javascript do
11-
=javascript_include_tag 'protips'
12-
=javascript_include_tag 'networks'
10+
= content_for :javascript do
11+
= javascript_include_tag 'protips'
12+
= javascript_include_tag 'networks'
1313
:javascript
1414
var mynetworks = #{current_user.nil? ? [] : current_user.networks.map(&:name)};
1515
for (i = 0; i < mynetworks.length; i++) {
1616
$('.network h2 a').filter(function(){return $(this).text().trim() == mynetworks[i]}).closest('.network').find('.join-or-leave').addClass('member')
1717
}
1818
$('.network h2 a').filter(function(){return mynetworks.indexOf($(this).text().trim()) < 0}).closest('.network').find('.join-or-leave').removeClass('member').addClass('join')
1919

20-
=content_for :footer_menu do
20+
= content_for :footer_menu do
2121
%li=link_to 'Protips', by_tags_protips_path
2222

2323
.inside-main-content.cf
@@ -26,7 +26,7 @@
2626
%li
2727
%a{href: networks_path, class: networks_sub_nav_class('') + networks_sub_nav_class('a_z')}
2828
A - Z
29-
- if params[:action] == 'index'
29+
- if @index_networks_params[:action] == 'index'
3030
%li.add-network
3131
=link_to('Add Network', add_network_url, class: '')
3232

@@ -37,5 +37,5 @@
3737
Join some
3838
= link_to 'here', networks_path
3939
or from the list below
40-
= render partial: determine_networks_partial(params[:sort]), locals: {networks_list: current_user.try(:networks_based_on_skills) || Network.most_protips.first(7), user: (defined?(@user) ? @user : nil)}
41-
= render partial: determine_networks_partial(params[:sort]), locals: {networks_list: @networks, user: (defined?(@user) ? @user : nil)}
40+
= render partial: determine_networks_partial(@index_networks_params[:sort]), locals: {networks_list: current_user.try(:networks_based_on_skills) || Network.most_protips.first(7), user: (defined?(@user) ? @user : nil)}
41+
= render partial: determine_networks_partial(@index_networks_params[:sort]), locals: {networks_list: @networks, user: (defined?(@user) ? @user : nil)}

app/views/teams/update.js.erb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
$('#dimmer').css('display', 'none').css('z-index', -1000);
2-
$('<%=params[:section_id]%>').replaceWith('<%=escape_javascript(render(:partial => partialify_html_section_id(params[:section_id])))%>');
3-
<% if params[:section_id] == '#office-images' %>
2+
$('<%= @section_id%>').replaceWith('<%=escape_javascript(render(:partial => partialify_html_section_id(@section_id)))%>');
3+
<% if @section_id == '#office-images' %>
44
autoOrganizePhotos();
55
<% end %>
66
<% if @team.has_specified_enough_info? %>
77
$('.add-job.disable').removeClass('disable').attr('href', '<%= add_job_path(@team) %>');
88
<% else %>
99
$('.add-job').addClass('disable').attr('href', '<%= add_job_path(@team) %>');
10-
<% end %>
10+
<% end %>

0 commit comments

Comments
 (0)