From a49d86e04463e3032c3e7f937c382f6983dfd1a2 Mon Sep 17 00:00:00 2001 From: mccraig mccraig of the clan mccraig Date: Thu, 9 May 2019 17:35:55 +0100 Subject: [PATCH] ensure form-decode-str encoding is a String --- src/ring/util/codec.clj | 3 +++ test/ring/util/test/codec.clj | 9 +++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/ring/util/codec.clj b/src/ring/util/codec.clj index 4916ee9..bd90686 100644 --- a/src/ring/util/codec.clj +++ b/src/ring/util/codec.clj @@ -126,6 +126,9 @@ ([encoded] (form-decode-str encoded "UTF-8")) ([^String encoded encoding] + (when-not (string? encoding) + (throw (ex-info "encoding must be a String" + {:encoded encoded :encoding encoding}))) (try (URLDecoder/decode encoded encoding) (catch Exception _ nil)))) diff --git a/test/ring/util/test/codec.clj b/test/ring/util/test/codec.clj index 6217b0f..7169792 100644 --- a/test/ring/util/test/codec.clj +++ b/test/ring/util/test/codec.clj @@ -1,7 +1,8 @@ (ns ring.util.test.codec (:use clojure.test ring.util.codec) - (:import java.util.Arrays)) + (:import java.util.Arrays + clojure.lang.ExceptionInfo)) (deftest test-percent-encode (is (= (percent-encode " ") "%20")) @@ -53,7 +54,11 @@ (deftest test-form-decode-str (is (= (form-decode-str "foo=bar+baz") "foo=bar baz")) - (is (nil? (form-decode-str "%D")))) + (is (nil? (form-decode-str "%D"))) + (is (thrown-with-msg? + ExceptionInfo + #"encoding must be a String" + (form-decode-str "foo" nil)))) (deftest test-form-decode (are [x y] (= (form-decode x) y)