sup

A curses threads-with-tags style email client

sup.git

git clone https://supmua.dev/git/sup/
commit ffca8c40eae3d2adbd8e5c50bc02a2017b26a929
parent fc36a8f0444339c1662cd2132575be4c4d97c614
Author: Gaute Hope <eg@gaute.vetsj.com>
Date:   Mon, 22 Jul 2013 16:40:20 +0200

Merge branch 'test_invalid_sequence' into develop

Diffstat:
M lib/sup/util/query.rb | 7 ++++++-
M test/unit/util/test_query.rb | 15 +++++++++++++++
2 files changed, 21 insertions(+), 1 deletion(-)
diff --git a/lib/sup/util/query.rb b/lib/sup/util/query.rb
@@ -1,8 +1,13 @@
 module Redwood
   module Util
     module Query
+      class QueryDescriptionError < ArgumentError; end
+
       def self.describe query
-        query.description.force_encoding("UTF-8")
+        d = query.description.force_encoding("UTF-8")
+
+        raise QueryDescriptionError.new(d) unless d.valid_encoding?
+        return d
       end
     end
   end
diff --git a/test/unit/util/test_query.rb b/test/unit/util/test_query.rb
@@ -18,5 +18,20 @@ describe Redwood::Util::Query do
       desc = Redwood::Util::Query.describe(query)
       _ = (life + desc) # No exception thrown
     end
+
+    it "returns a valid UTF-8 description of bad input" do
+      msg = "asdfa \xc3\x28 åasdf"
+      query = Xapian::Query.new msg
+      life = 'hæi'
+
+      # this is now possibly UTF-8 string with possibly invalid chars
+      assert_raises Redwood::Util::Query::QueryDescriptionError do
+        desc = Redwood::Util::Query.describe (query)
+      end
+
+      assert_raises Encoding::CompatibilityError do
+        _ = life + query.description
+      end
+    end
   end
 end