Add US-ASCII unprintable control characters to the exlusion list per RFC2396 2.4.3
authorRyan Davis <ryan@acceleration.net>
Fri, 2 Apr 2010 20:41:19 +0000 (16:41 -0400)
committerKevin Rosenberg <kevin@rosenberg.net>
Fri, 9 Apr 2010 15:56:02 +0000 (09:56 -0600)
http://www.ietf.org/rfc/rfc2396.txt

Adds to *excluded-characters*, with a test

src.lisp
tests.lisp

index ab13bad4a490d76a83fbe13d499e87eef7714d6a..d39d32b249b127e83b6ff8925472923998bb95f1 100644 (file)
--- a/src.lisp
+++ b/src.lisp
 ;; Parsing
 
 (defparameter *excluded-characters*
-    '(;; `delims' (except #\%, because it's handled specially):
+    (append
+     (loop for i from 0 to #x1f
+          collect (code-char i))
+     '(;; `delims' (except #\%, because it's handled specially):
       #\< #\> #\" #\space #\#
+
       ;; `unwise':
-      #\{ #\} #\| #\\ #\^ #\[ #\] #\`))
+      #\{ #\} #\| #\\ #\^ #\[ #\] #\`)))
 
 (defun reserved-char-vector (chars &key except)
   (do* ((a (make-array 127 :element-type 'bit :initial-element 0))
index b5cbe37e8132ddff3ae926c89c226e0d384811de..77d19612ad56fb7af08b630a51503ad1c5712adb 100644 (file)
        :condition-type 'uri-parse-error)
      res)
 
+
+    ;;an escaped newline isn't rendered properly
+    (push
+    `(let ((weird-uri "https://example.com/q?foo%0abar%20baz"))
+       (test
+       weird-uri
+       (puri:render-uri (puri:parse-uri weird-uri) nil)
+       :test #'string=)
+     ) res)
+
     `(progn ,@(nreverse res))))
 
 (defun do-tests ()