[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master d11627a: Make gnus-base64-repad a bit stricter again
From: |
Lars Ingebrigtsen |
Subject: |
master d11627a: Make gnus-base64-repad a bit stricter again |
Date: |
Wed, 30 Sep 2020 20:45:09 -0400 (EDT) |
branch: master
commit d11627a7cadfe7db9415269135a8f4bec543ccd7
Author: Alex Bochannek <alex@bochannek.com>
Commit: Lars Ingebrigtsen <larsi@gnus.org>
Make gnus-base64-repad a bit stricter again
* lisp/gnus/gnus-util.el (gnus-base64-repad): Make the code a bit
stricter again.
---
lisp/gnus/gnus-util.el | 6 +++++-
test/lisp/gnus/gnus-util-tests.el | 13 ++++++++-----
2 files changed, 13 insertions(+), 6 deletions(-)
diff --git a/lisp/gnus/gnus-util.el b/lisp/gnus/gnus-util.el
index 0e15ebc..1cf6bb7 100644
--- a/lisp/gnus/gnus-util.el
+++ b/lisp/gnus/gnus-util.el
@@ -1368,7 +1368,11 @@ CRLF (RFC 5321 SMTP)."
;; input (3.1, 3.3)
;; - if line-length is set, error on input exceeding the limit (3.1)
;; - reject characters outside base encoding (3.3, also section 12)
- (let ((splitstr (split-string str "[\n\r \t]+" t)))
+ ;;
+ ;; RFC 5322 section 2.2.3 consideration:
+ ;; Because base 64-encoded strings can appear in long header fields, remove
+ ;; folding whitespace while still observing the RFC 4648 decisions above.
+ (let ((splitstr (split-string str "[ \t]*[\r\n]+[ \t]?" t)))
(when (and reject-newlines (> (length splitstr) 1))
(error "Invalid Base64 string"))
(dolist (substr splitstr)
diff --git a/test/lisp/gnus/gnus-util-tests.el
b/test/lisp/gnus/gnus-util-tests.el
index ec58032..47f0a9c 100644
--- a/test/lisp/gnus/gnus-util-tests.el
+++ b/test/lisp/gnus/gnus-util-tests.el
@@ -151,8 +151,10 @@
(should (equal "Zg==" (gnus-base64-repad "Zg")))
(should (equal "Zg==" (gnus-base64-repad "Zg====")))
- (should (equal (gnus-base64-repad " ") ""))
- (should (equal (gnus-base64-repad "Zg== ") "Zg=="))
+ (should-error (gnus-base64-repad " ")
+ :type 'error)
+ (should-error (gnus-base64-repad "Zg== ")
+ :type 'error)
(should-error (gnus-base64-repad "Z?\x00g==")
:type 'error)
;; line-length
@@ -162,9 +164,10 @@
(should-error (gnus-base64-repad "Zm9v\r\nYmFy" t)
:type 'error)
(should (equal "Zm9vYmFy" (gnus-base64-repad "Zm9vYmFy" t)))
- (should (equal "Zm9vYmFy" (gnus-base64-repad "Zm9v\r\nYmFy" nil)))
- (should (equal "Zm9vYmFy" (gnus-base64-repad "Zm9v\r\nYmFy\n" nil)))
- (should (equal (gnus-base64-repad "Zm9v\r\n YmFy\r\n" nil) "Zm9vYmFy"))
+ (should (equal "Zm9vYmFy" (gnus-base64-repad "Zm9v\r\nYmFy")))
+ (should (equal "Zm9vYmFy" (gnus-base64-repad "Zm9v\r\nYmFy\n")))
+ (should (equal "Zm9vYmFy" (gnus-base64-repad "Zm9v\r\n YmFy\r\n")))
+ (should (equal "Zm9vYmFy" (gnus-base64-repad "Zm9v \r\n\tYmFy")))
(should-error (gnus-base64-repad "Zm9v\r\nYmFy" nil 3)
:type 'error))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master d11627a: Make gnus-base64-repad a bit stricter again,
Lars Ingebrigtsen <=