Skip to content

Commit 5119ad7

Browse files
authored
Fix: Better parameter checking and validation (#438)
* Fix: Better parameter checking and validation * Fix param validation
1 parent 4588dfd commit 5119ad7

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

app/controllers/passwords_controller.rb

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -91,14 +91,23 @@ def create
9191
# See config/settings.yml
9292
authenticate_user! if Settings.enable_logins && !Settings.allow_anonymous
9393

94+
# binding.pry
9495
# params[:password] has to exist
96+
# params[:password] has to be a ActionController::Parameters (Hash)
97+
password_param = params.fetch(:password, {})
98+
if !password_param.respond_to?(:fetch)
99+
respond_to do |format|
100+
format.html { redirect_to root_path, status: :bad_request, notice: 'Bad Request' }
101+
format.json { render json: '{}', status: :bad_request }
102+
end
103+
return
104+
end
105+
95106
# params[:password][:payload] has to exist
96107
# params[:password][:payload] can't be blank
97-
# params[:password][:payload] can't be longer than 1 megabyte
98-
99-
payload_param = params.fetch(:password, {}).fetch(:payload, '')
100-
if !payload_param.is_a?(String) || payload_param.blank? || payload_param.length > 1.megabyte
101-
108+
# params[:password][:payload] must have a length between 1 and 1 megabyte
109+
payload_param = password_param.fetch(:payload, '')
110+
unless payload_param.is_a?(String) && payload_param.length.between?(1, 1.megabyte)
102111
respond_to do |format|
103112
format.html { redirect_to root_path, status: :bad_request, notice: 'Bad Request' }
104113
format.json { render json: '{}', status: :bad_request }

0 commit comments

Comments
 (0)