diff options
author | Markus Unterwaditzer <markus@unterwaditzer.net> | 2023-01-11 21:59:13 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-11 21:59:13 +0100 |
commit | 0c689b9d014324aba5b8751dacec4c0fc20b2038 (patch) | |
tree | ce2835e33c6014072832a068c4278aca89e5432e /app/lib | |
parent | fd33bcb3b25d3eaf593ade0aa8709a1184fc254e (diff) |
fix: allow verification when page size exceeds 1MB (using HTML5 parser) (#22879)
* fix: allow verification when page size exceeds 1MB Truncates the page after 1MB instead Closes #15316 * switch to HTML5 parser, fix rubocop errors * undo rubocop fixes Co-authored-by: Chris Zubak-Skees <chriszs@gmail.com>
Diffstat (limited to 'app/lib')
-rw-r--r-- | app/lib/request.rb | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/app/lib/request.rb b/app/lib/request.rb index b2819c8ed..0508169dc 100644 --- a/app/lib/request.rb +++ b/app/lib/request.rb @@ -154,9 +154,7 @@ class Request end module ClientLimit - def body_with_limit(limit = 1.megabyte) - raise Mastodon::LengthValidationError if content_length.present? && content_length > limit - + def truncated_body(limit = 1.megabyte) if charset.nil? encoding = Encoding::BINARY else @@ -173,11 +171,19 @@ class Request contents << chunk chunk.clear - raise Mastodon::LengthValidationError if contents.bytesize > limit + break if contents.bytesize > limit end contents end + + def body_with_limit(limit = 1.megabyte) + raise Mastodon::LengthValidationError if content_length.present? && content_length > limit + + contents = truncated_body(limit) + raise Mastodon::LengthValidationError if contents.bytesize > limit + contents + end end if ::HTTP::Response.methods.include?(:body_with_limit) && !Rails.env.production? |