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:
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