aboutsummaryrefslogtreecommitdiffstats
path: root/test/src
diff options
context:
space:
mode:
authorMattias Engdegård2021-12-20 18:17:23 +0100
committerMattias Engdegård2021-12-20 20:22:09 +0100
commita34650acff3740980ef23d900d35004bcfe2ef04 (patch)
tree5e34b2538df2849832e3971bc7d0cd9546b5adc9 /test/src
parent27be90154d1a4b19efe30c97f221b29e3becc920 (diff)
downloademacs-a34650acff3740980ef23d900d35004bcfe2ef04.tar.gz
emacs-a34650acff3740980ef23d900d35004bcfe2ef04.zip
Fix sloppy base64 acceptance of some multibyte characters
The base64 encoding functions incorrectly accepted some multibyte characters; stop doing that (bug#52670). * src/fns.c (base64_encode_1): Reject all multibyte characters. * test/src/fns-tests.el (fns-tests-base64-encode-string) (fns-test-base64url-encode-region) (fns-test-base64url-encode-string): Add tests. * doc/lispref/text.texi (Base 64): Rephrase outdated manual text. * etc/NEWS: Add a notice.
Diffstat (limited to 'test/src')
-rw-r--r--test/src/fns-tests.el16
1 files changed, 13 insertions, 3 deletions
diff --git a/test/src/fns-tests.el b/test/src/fns-tests.el
index bec5c03f9e7..63423f622f8 100644
--- a/test/src/fns-tests.el
+++ b/test/src/fns-tests.el
@@ -318,7 +318,10 @@
318 (should (equal (base64-encode-string "fooba") "Zm9vYmE=")) 318 (should (equal (base64-encode-string "fooba") "Zm9vYmE="))
319 (should (equal (base64-encode-string "foobar") "Zm9vYmFy")) 319 (should (equal (base64-encode-string "foobar") "Zm9vYmFy"))
320 (should (equal (base64-encode-string "\x14\xfb\x9c\x03\xd9\x7e") "FPucA9l+")) 320 (should (equal (base64-encode-string "\x14\xfb\x9c\x03\xd9\x7e") "FPucA9l+"))
321 (should (equal (base64-encode-string "\x14\xfb\x9c\x03\xd9\x7f") "FPucA9l/"))) 321 (should (equal (base64-encode-string "\x14\xfb\x9c\x03\xd9\x7f") "FPucA9l/"))
322
323 (should-error (base64-encode-string "ƒ"))
324 (should-error (base64-encode-string "ü")))
322 325
323(ert-deftest fns-test-base64url-encode-region () 326(ert-deftest fns-test-base64url-encode-region ()
324 ;; url variant with padding 327 ;; url variant with padding
@@ -360,7 +363,11 @@
360 (should (equal (fns-tests--with-region base64url-encode-region (fns-tests--string-repeat "\x14\xfb\x9c\x03\xd9\x7e" 10) t) 363 (should (equal (fns-tests--with-region base64url-encode-region (fns-tests--string-repeat "\x14\xfb\x9c\x03\xd9\x7e" 10) t)
361 (fns-tests--string-repeat "FPucA9l-" 10))) 364 (fns-tests--string-repeat "FPucA9l-" 10)))
362 (should (equal (fns-tests--with-region base64url-encode-region (fns-tests--string-repeat "\x14\xfb\x9c\x03\xd9\x7f" 10) t) 365 (should (equal (fns-tests--with-region base64url-encode-region (fns-tests--string-repeat "\x14\xfb\x9c\x03\xd9\x7f" 10) t)
363 (fns-tests--string-repeat "FPucA9l_" 10)))) 366 (fns-tests--string-repeat "FPucA9l_" 10)))
367
368 (should-error (fns-tests--with-region base64url-encode-region "ƒ"))
369 (should-error (fns-tests--with-region base64url-encode-region "ü")))
370
364 371
365(ert-deftest fns-test-base64url-encode-string () 372(ert-deftest fns-test-base64url-encode-string ()
366 ;; url variant with padding 373 ;; url variant with padding
@@ -394,7 +401,10 @@
394 (should (equal (base64url-encode-string (fns-tests--string-repeat "fooba" 15) t) (fns-tests--string-repeat "Zm9vYmFmb29iYWZvb2Jh" 5))) 401 (should (equal (base64url-encode-string (fns-tests--string-repeat "fooba" 15) t) (fns-tests--string-repeat "Zm9vYmFmb29iYWZvb2Jh" 5)))
395 (should (equal (base64url-encode-string (fns-tests--string-repeat "foobar" 15) t) (concat (fns-tests--string-repeat "Zm9vYmFyZm9vYmFy" 7) "Zm9vYmFy"))) 402 (should (equal (base64url-encode-string (fns-tests--string-repeat "foobar" 15) t) (concat (fns-tests--string-repeat "Zm9vYmFyZm9vYmFy" 7) "Zm9vYmFy")))
396 (should (equal (base64url-encode-string (fns-tests--string-repeat "\x14\xfb\x9c\x03\xd9\x7e" 10) t) (fns-tests--string-repeat "FPucA9l-" 10))) 403 (should (equal (base64url-encode-string (fns-tests--string-repeat "\x14\xfb\x9c\x03\xd9\x7e" 10) t) (fns-tests--string-repeat "FPucA9l-" 10)))
397 (should (equal (base64url-encode-string (fns-tests--string-repeat "\x14\xfb\x9c\x03\xd9\x7f" 10) t) (fns-tests--string-repeat "FPucA9l_" 10)))) 404 (should (equal (base64url-encode-string (fns-tests--string-repeat "\x14\xfb\x9c\x03\xd9\x7f" 10) t) (fns-tests--string-repeat "FPucA9l_" 10)))
405
406 (should-error (base64url-encode-string "ƒ"))
407 (should-error (base64url-encode-string "ü")))
398 408
399(ert-deftest fns-tests-base64-decode-string () 409(ert-deftest fns-tests-base64-decode-string ()
400 ;; standard variant RFC2045 410 ;; standard variant RFC2045