From: Martin Jerabek Date: Mon, 24 Oct 2022 10:02:20 +0000 (+0200) Subject: Repair nXML handling of URIs with hex escapes (bug#58718) X-Git-Tag: emacs-29.0.90~1616^2~487 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=aa793512d04c53e423563530f64c1d42d7d0accd;p=emacs.git Repair nXML handling of URIs with hex escapes (bug#58718) Copyright-paperwork-exempt: yes * lisp/nxml/rng-uri.el (rng-uri-file-name-1): Add missing backslashes. (rng-uri-unescape-unibyte, rng-uri-unescape-unibyte-match): Convert hex-encoded character to string. --- diff --git a/lisp/nxml/rng-uri.el b/lisp/nxml/rng-uri.el index 77fed8c32da..59e696e2cc9 100644 --- a/lisp/nxml/rng-uri.el +++ b/lisp/nxml/rng-uri.el @@ -68,7 +68,7 @@ Signal an error if URI is not a valid file URL." ;; pattern is either nil or match or replace (defun rng-uri-file-name-1 (uri pattern) - (unless (string-match "\\`\\(?:[^%]\\|%[[:xdigit:]]{2}\\)*\\'" uri) + (unless (string-match "\\`\\(?:[^%]\\|%[[:xdigit:]]\\{2\\}\\)*\\'" uri) (rng-uri-error "Bad escapes in URI `%s'" uri)) (setq uri (rng-uri-unescape-multibyte uri)) (let* ((components @@ -312,7 +312,7 @@ Both FULL and BASE must be absolute URIs." (defun rng-uri-unescape-unibyte (str) (replace-regexp-in-string "%[0-7][[:xdigit:]]" (lambda (h) - (string-to-number (substring h 1) 16)) + (string (string-to-number (substring h 1) 16))) str t t)) @@ -325,8 +325,8 @@ Both FULL and BASE must be absolute URIs." (regexp-quote (if (= (length match) 1) match - (string-to-number (substring match 1) - 16))))) + (string (string-to-number (substring match 1) + 16)))))) str t t))