summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/lib/exceptions.rb1
-rw-r--r--app/models/concerns/remotable.rb2
-rw-r--r--app/models/media_attachment.rb1
-rw-r--r--app/services/update_account_service.rb2
4 files changed, 4 insertions, 2 deletions
diff --git a/app/lib/exceptions.rb b/app/lib/exceptions.rb
index 3362576b0bc..7c8e778713a 100644
--- a/app/lib/exceptions.rb
+++ b/app/lib/exceptions.rb
@@ -7,6 +7,7 @@ module Mastodon
class HostValidationError < ValidationError; end
class LengthValidationError < ValidationError; end
class DimensionsValidationError < ValidationError; end
+ class StreamValidationError < ValidationError; end
class RaceConditionError < Error; end
class RateLimitExceededError < Error; end
diff --git a/app/models/concerns/remotable.rb b/app/models/concerns/remotable.rb
index c6d0c7f1f44..56b9c016422 100644
--- a/app/models/concerns/remotable.rb
+++ b/app/models/concerns/remotable.rb
@@ -29,7 +29,7 @@ module Remotable
rescue Mastodon::UnexpectedResponseError, HTTP::TimeoutError, HTTP::ConnectionError, OpenSSL::SSL::SSLError => e
Rails.logger.debug "Error fetching remote #{attachment_name}: #{e}"
raise e unless suppress_errors
- rescue Paperclip::Errors::NotIdentifiedByImageMagickError, Addressable::URI::InvalidURIError, Mastodon::HostValidationError, Mastodon::LengthValidationError, Paperclip::Error, Mastodon::DimensionsValidationError => e
+ rescue Paperclip::Errors::NotIdentifiedByImageMagickError, Addressable::URI::InvalidURIError, Mastodon::HostValidationError, Mastodon::LengthValidationError, Paperclip::Error, Mastodon::DimensionsValidationError, Mastodon::StreamValidationError => e
Rails.logger.debug "Error fetching remote #{attachment_name}: #{e}"
end
diff --git a/app/models/media_attachment.rb b/app/models/media_attachment.rb
index 3f2e0ceb1b8..3d93ec75ba8 100644
--- a/app/models/media_attachment.rb
+++ b/app/models/media_attachment.rb
@@ -336,6 +336,7 @@ class MediaAttachment < ApplicationRecord
return unless movie.valid?
+ raise Mastodon::StreamValidationError, 'Video has no video stream' if movie.width.nil? || movie.frame_rate.nil?
raise Mastodon::DimensionsValidationError, "#{movie.width}x#{movie.height} videos are not supported" if movie.width * movie.height > MAX_VIDEO_MATRIX_LIMIT
raise Mastodon::DimensionsValidationError, "#{movie.frame_rate.to_i}fps videos are not supported" if movie.frame_rate > MAX_VIDEO_FRAME_RATE
end
diff --git a/app/services/update_account_service.rb b/app/services/update_account_service.rb
index 4172d577408..666db5c7113 100644
--- a/app/services/update_account_service.rb
+++ b/app/services/update_account_service.rb
@@ -12,7 +12,7 @@ class UpdateAccountService < BaseService
check_links(account)
process_hashtags(account)
end
- rescue Mastodon::DimensionsValidationError => de
+ rescue Mastodon::DimensionsValidationError, Mastodon::StreamValidationError => de
account.errors.add(:avatar, de.message)
false
end