From: Robert Pluim Date: Mon, 9 Dec 2019 17:41:59 +0000 (+0100) Subject: Treat passed strings as raw-text when percent-escaping in epg X-Git-Tag: emacs-27.0.90~372 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=d57bb0c323c326518d9cc974dc794f9e23a51917;p=emacs.git Treat passed strings as raw-text when percent-escaping in epg The strings contained in gpg keys can contain UTF-8 data, but can also use percent-escapes to encode non-ASCII chars. When converting those escapes, use 'raw-text' coding system rather than 'string-to-unibyte', since the latter signals an error for non-ASCII characters. * lisp/epg.el (epg--decode-percent-escape): Convert the passed string to raw-text before treating percent escapes (Bug#38512). --- diff --git a/lisp/epg.el b/lisp/epg.el index 090317f4221..5466716e342 100644 --- a/lisp/epg.el +++ b/lisp/epg.el @@ -2032,7 +2032,7 @@ If you are unsure, use synchronous version of this function (epg-reset context))) (defun epg--decode-percent-escape (string) - (setq string (string-to-unibyte string)) + (setq string (encode-coding-string string 'raw-text)) (let ((index 0)) (while (string-match "%\\(\\(%\\)\\|\\([[:xdigit:]][[:xdigit:]]\\)\\)" string index)