4363: Validate utf-8 encoding of manifest_text.
[arvados.git] / services / api / app / models / collection.rb
index accd2cc62c7bc049518481efdcbf49db592f325a..5dd760feee0b10664f45a1482c2a30260c0c7249 100644 (file)
@@ -5,6 +5,7 @@ class Collection < ArvadosModel
   include KindAndEtag
   include CommonApiTemplate
 
+  before_validation :check_encoding
   before_validation :check_signatures
   before_validation :strip_manifest_text
   before_validation :set_portable_data_hash
@@ -106,6 +107,15 @@ class Collection < ArvadosModel
     true
   end
 
+  def check_encoding
+    if manifest_text.encoding.name == 'UTF-8' and manifest_text.valid_encoding?
+      true
+    else
+      errors.add :manifest_text, "must use UTF-8 encoding"
+      false
+    end
+  end
+
   def redundancy_status
     if redundancy_confirmed_as.nil?
       'unconfirmed'