Browse Source

Fix handling of malformed ActivityPub payloads when URIs are nil (#7370)

* Fix handling of malformed ActivityPub payloads when URIs are nil

* Gracefully handle JSON-LD canonicalization failures
pull/4/head
Eugen Rochko 6 years ago
committed by GitHub
parent
commit
c947e2e4c5
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 8 additions and 0 deletions
  1. +4
    -0
      app/lib/activitypub/tag_manager.rb
  2. +1
    -0
      app/services/activitypub/fetch_remote_status_service.rb
  3. +3
    -0
      app/services/activitypub/process_collection_service.rb

+ 4
- 0
app/lib/activitypub/tag_manager.rb View File

@ -86,6 +86,8 @@ class ActivityPub::TagManager
end
def local_uri?(uri)
return false if uri.nil?
uri = Addressable::URI.parse(uri)
host = uri.normalized_host
host = "#{host}:#{uri.port}" if uri.port
@ -99,6 +101,8 @@ class ActivityPub::TagManager
end
def uri_to_resource(uri, klass)
return if uri.nil?
if local_uri?(uri)
case klass.name
when 'Account'

+ 1
- 0
app/services/activitypub/fetch_remote_status_service.rb View File

@ -34,6 +34,7 @@ class ActivityPub::FetchRemoteStatusService < BaseService
end
def trustworthy_attribution?(uri, attributed_to)
return false if uri.nil? || attributed_to.nil?
Addressable::URI.parse(uri).normalized_host.casecmp(Addressable::URI.parse(attributed_to).normalized_host).zero?
end

+ 3
- 0
app/services/activitypub/process_collection_service.rb View File

@ -45,5 +45,8 @@ class ActivityPub::ProcessCollectionService < BaseService
def verify_account!
@account = ActivityPub::LinkedDataSignature.new(@json).verify_account!
rescue JSON::LD::JsonLdError => e
Rails.logger.debug "Could not verify LD-Signature for #{value_or_id(@json['actor'])}: #{e.message}"
nil
end
end

Loading…
Cancel
Save