From 13b08610a08faf2909f7c871be62da955d9293d3 Mon Sep 17 00:00:00 2001
From: Claire <claire.github-309c@sitedethib.com>
Date: Wed, 11 Aug 2021 16:40:55 +0200
Subject: [PATCH] Fix crash when encountering invalid account fields (#16598)

* Add test

* Fix crash when encountering invalid account fields
---
 app/models/account.rb                                     | 6 +++++-
 spec/services/activitypub/process_account_service_spec.rb | 1 +
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/app/models/account.rb b/app/models/account.rb
index a6d8d1537..f7a7f4a7b 100644
--- a/app/models/account.rb
+++ b/app/models/account.rb
@@ -295,7 +295,11 @@ class Account < ApplicationRecord
   end
 
   def fields
-    (self[:fields] || []).map { |f| Field.new(self, f) }
+    (self[:fields] || []).map do |f|
+      Field.new(self, f)
+    rescue
+      nil
+    end.compact
   end
 
   def fields_attributes=(attributes)
diff --git a/spec/services/activitypub/process_account_service_spec.rb b/spec/services/activitypub/process_account_service_spec.rb
index 56e7f8321..1b1d878a7 100644
--- a/spec/services/activitypub/process_account_service_spec.rb
+++ b/spec/services/activitypub/process_account_service_spec.rb
@@ -12,6 +12,7 @@ RSpec.describe ActivityPub::ProcessAccountService, type: :service do
         attachment: [
           { type: 'PropertyValue', name: 'Pronouns', value: 'They/them' },
           { type: 'PropertyValue', name: 'Occupation', value: 'Unit test' },
+          { type: 'PropertyValue', name: 'non-string', value: ['foo', 'bar'] },
         ],
       }.with_indifferent_access
     end