>From 11f56bd6a4fdf1331ea30cd68b4d77e35215b4a5 Mon Sep 17 00:00:00 2001 From: Ian Price Date: Mon, 20 Aug 2012 23:03:38 +0100 Subject: [PATCH 1/2] Fix uri-encoding for octets 0-15 * module/web/uri.scm (uri-encode): All encoded octets should be of the form % HEXDIGIT HEXDIGIT. * test-suite/tests/web-uri.test ("encode"): Add test. --- module/web/uri.scm | 2 ++ test-suite/tests/web-uri.test | 3 ++- 2 files changed, 4 insertions(+), 1 deletions(-) diff --git a/module/web/uri.scm b/module/web/uri.scm index 109118b..3816d02 100644 --- a/module/web/uri.scm +++ b/module/web/uri.scm @@ -377,6 +377,8 @@ the byte." (if (< i len) (let ((byte (bytevector-u8-ref bv i))) (display #\% port) + (when (< byte 16) + (display #\0 port)) (display (number->string byte 16) port) (lp (1+ i)))))))) str))) diff --git a/test-suite/tests/web-uri.test b/test-suite/tests/web-uri.test index 4621a19..a9ded46 100644 --- a/test-suite/tests/web-uri.test +++ b/test-suite/tests/web-uri.test @@ -258,4 +258,5 @@ (equal? "foo bar" (uri-decode "foo+bar")))) (with-test-prefix "encode" - (pass-if (equal? "foo%20bar" (uri-encode "foo bar")))) + (pass-if (equal? "foo%20bar" (uri-encode "foo bar"))) + (pass-if (equal? "foo%0a%00bar" (uri-encode "foo\n\x00bar")))) -- 1.7.7.6