From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: mattiase@acm.org Newsgroups: gmane.emacs.bugs Subject: bug#52670: [PATCH] legacy base64 encoding of latin-1 Date: Mon, 20 Dec 2021 18:26:15 +0100 Message-ID: <8D4B415F-DC16-456C-AC7E-0D8CE538EB5D@acm.org> References: <7AAE6196-B9B9-4367-87EC-80DD6304CBCE@acm.org> Mime-Version: 1.0 (Mac OS X Mail 14.0 \(3654.120.0.1.13\)) Content-Type: multipart/mixed; boundary="Apple-Mail=_3350BD54-E5A1-4E1B-8A43-5A0451D8906C" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="16742"; mail-complaints-to="usenet@ciao.gmane.io" To: 52670@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Mon Dec 20 19:53:57 2021 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mzNnI-0004Ck-PR for geb-bug-gnu-emacs@m.gmane-mx.org; Mon, 20 Dec 2021 19:53:57 +0100 Original-Received: from localhost ([::1]:44514 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mzNnH-0007kT-Q7 for geb-bug-gnu-emacs@m.gmane-mx.org; Mon, 20 Dec 2021 13:53:55 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:49258) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mzMRM-0000Rr-CG for bug-gnu-emacs@gnu.org; Mon, 20 Dec 2021 12:27:12 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:39808) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mzMRC-0003Fy-Ks for bug-gnu-emacs@gnu.org; Mon, 20 Dec 2021 12:27:11 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1mzMRC-0006uV-F5 for bug-gnu-emacs@gnu.org; Mon, 20 Dec 2021 12:27:02 -0500 X-Loop: help-debbugs@gnu.org In-Reply-To: <7AAE6196-B9B9-4367-87EC-80DD6304CBCE@acm.org> Resent-From: mattiase@acm.org Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 20 Dec 2021 17:27:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 52670 X-GNU-PR-Package: emacs Original-Received: via spool by 52670-submit@debbugs.gnu.org id=B52670.164002118826512 (code B ref 52670); Mon, 20 Dec 2021 17:27:02 +0000 Original-Received: (at 52670) by debbugs.gnu.org; 20 Dec 2021 17:26:28 +0000 Original-Received: from localhost ([127.0.0.1]:51354 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mzMQe-0006tX-54 for submit@debbugs.gnu.org; Mon, 20 Dec 2021 12:26:28 -0500 Original-Received: from mail212c50.megamailservers.eu ([91.136.10.222]:35602 helo=mail194c50.megamailservers.eu) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mzMQb-0006tF-Hr for 52670@debbugs.gnu.org; Mon, 20 Dec 2021 12:26:27 -0500 X-Authenticated-User: mattiase@bredband.net DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=megamailservers.eu; s=maildub; t=1640021178; bh=ns/gYIV14jBd5DiToo5drSJfHAQqAfm8IcYcZ9CP4Ng=; h=From:Subject:Date:To:From; b=UUbeS1HiFv5H21E7DAxd61EevZXaE62vbWm7PacD+xbEbiReGgK1JsQFYXrTxd/ws r9vW6bd+9D2IM/FstqI4FyMfl5RlGnFGLDSL7d2rcHO35JJOQZvVv35GTfnytmIX1d NpFP7Rsu9EtiF1vULH+PZdP/JxzMr9t7Vhbsf6IE= Feedback-ID: mattiase@acm.or Original-Received: from smtpclient.apple (c188-150-171-71.bredband.tele2.se [188.150.171.71]) (authenticated bits=0) by mail194c50.megamailservers.eu (8.14.9/8.13.1) with ESMTP id 1BKHQFTe017287 for <52670@debbugs.gnu.org>; Mon, 20 Dec 2021 17:26:17 +0000 X-Mailer: Apple Mail (2.3654.120.0.1.13) X-CTCH-RefID: str=0001.0A742F23.61C0BCBA.0025, ss=1, re=0.000, recu=0.000, reip=0.000, cl=1, cld=1, fgs=0 X-CTCH-VOD: Unknown X-CTCH-Spam: Unknown X-CTCH-Score: 0.000 X-CTCH-Flags: 0 X-CTCH-ScoreCust: 0.000 X-CSC: 0 X-CHA: v=2.4 cv=Dv41REz+ c=1 sm=1 tr=0 ts=61c0bcba a=SF+I6pRkHZhrawxbOkkvaA==:117 a=SF+I6pRkHZhrawxbOkkvaA==:17 a=01rKV5jzBg74_vTQjmwA:9 a=CjuIK1q_8ugA:10 a=kyLEW_mjE0qwRmBch9YA:9 a=B2y7HmGcmWMA:10 X-Origin-Country: SE X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:222797 Archived-At: --Apple-Mail=_3350BD54-E5A1-4E1B-8A43-5A0451D8906C Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii It really looks like the erroneous behaviour was an unintended effect of = commit 680d4b87f3d88a8b79f883cf3635036747588250. Anyway, here is a = patch. --Apple-Mail=_3350BD54-E5A1-4E1B-8A43-5A0451D8906C Content-Disposition: attachment; filename=0001-Fix-sloppy-base64-acceptance-of-some-multibyte-chara.patch Content-Type: application/octet-stream; x-unix-mode=0644; name="0001-Fix-sloppy-base64-acceptance-of-some-multibyte-chara.patch" Content-Transfer-Encoding: quoted-printable =46rom=20c979c063a96711b8dea018e7486b05a5a192bfd2=20Mon=20Sep=2017=20= 00:00:00=202001=0AFrom:=20=3D?UTF-8?q?Mattias=3D20Engdeg=3DC3=3DA5rd?=3D=20= =0ADate:=20Mon,=2020=20Dec=202021=2018:17:23=20+0100=0A= Subject:=20[PATCH]=20Fix=20sloppy=20base64=20acceptance=20of=20some=20= multibyte=20characters=0A=0AThe=20base64=20encoding=20functions=20= incorrectly=20accepted=20some=20multibyte=0Acharacters;=20stop=20doing=20= that=20(bug#52670).=0A=0A*=20src/fns.c=20(base64_encode_1):=20Reject=20= all=20multibyte=20characters.=0A*=20test/src/fns-tests.el=20= (fns-tests-base64-encode-string)=0A(fns-test-base64url-encode-region)=0A= (fns-test-base64url-encode-string):=20Add=20tests.=0A*=20= doc/lispref/text.texi=20(Base=2064):=20Rephrase=20outdated=20manual=20= text.=0A---=0A=20doc/lispref/text.texi=20|=20=205=20++---=0A=20src/fns.c=20= =20=20=20=20=20=20=20=20=20=20=20=20|=20=206=20+++---=0A=20= test/src/fns-tests.el=20|=2016=20+++++++++++++---=0A=203=20files=20= changed,=2018=20insertions(+),=209=20deletions(-)=0A=0Adiff=20--git=20= a/doc/lispref/text.texi=20b/doc/lispref/text.texi=0Aindex=20= 5ab5e5715f..9771d8a7ed=20100644=0A---=20a/doc/lispref/text.texi=0A+++=20= b/doc/lispref/text.texi=0A@@=20-4793,9=20+4793,8=20@@=20Base=2064=0A=20= This=20function=20converts=20the=20region=20from=20@var{beg}=20to=20= @var{end}=20into=20base=0A=2064=20code.=20=20It=20returns=20the=20length=20= of=20the=20encoded=20text.=20=20An=20error=20is=0A=20signaled=20if=20a=20= character=20in=20the=20region=20is=20multibyte,=20i.e.,=20in=20a=0A= -multibyte=20buffer=20the=20region=20must=20contain=20only=20characters=20= from=20the=0A-charsets=20@code{ascii},=20@code{eight-bit-control}=20and=0A= -@code{eight-bit-graphic}.=0A+multibyte=20buffer=20the=20region=20must=20= contain=20only=20ASCII=20characters=20or=20raw=0A+bytes.=0A=20=0A=20= Normally,=20this=20function=20inserts=20newline=20characters=20into=20= the=20encoded=0A=20text,=20to=20avoid=20overlong=20lines.=20=20However,=20= if=20the=20optional=20argument=0Adiff=20--git=20a/src/fns.c=20= b/src/fns.c=0Aindex=2076c76c92ba..23721334f7=20100644=0A---=20= a/src/fns.c=0A+++=20b/src/fns.c=0A@@=20-3653,7=20+3653,7=20@@=20= base64_encode_1=20(const=20char=20*from,=20char=20*to,=20ptrdiff_t=20= length,=0A=20=09=20=20c=20=3D=20string_char_and_length=20((unsigned=20= char=20*)=20from=20+=20i,=20&bytes);=0A=20=09=20=20if=20(CHAR_BYTE8_P=20= (c))=0A=20=09=20=20=20=20c=20=3D=20CHAR_TO_BYTE8=20(c);=0A-=09=20=20else=20= if=20(c=20>=3D=20256)=0A+=09=20=20else=20if=20(c=20>=3D=20128)=0A=20=09=20= =20=20=20return=20-1;=0A=20=09=20=20i=20+=3D=20bytes;=0A=20=09}=0A@@=20= -3696,7=20+3696,7=20@@=20base64_encode_1=20(const=20char=20*from,=20char=20= *to,=20ptrdiff_t=20length,=0A=20=09=20=20c=20=3D=20= string_char_and_length=20((unsigned=20char=20*)=20from=20+=20i,=20= &bytes);=0A=20=09=20=20if=20(CHAR_BYTE8_P=20(c))=0A=20=09=20=20=20=20c=20= =3D=20CHAR_TO_BYTE8=20(c);=0A-=09=20=20else=20if=20(c=20>=3D=20256)=0A+=09= =20=20else=20if=20(c=20>=3D=20128)=0A=20=09=20=20=20=20return=20-1;=0A=20= =09=20=20i=20+=3D=20bytes;=0A=20=09}=0A@@=20-3721,7=20+3721,7=20@@=20= base64_encode_1=20(const=20char=20*from,=20char=20*to,=20ptrdiff_t=20= length,=0A=20=09=20=20c=20=3D=20string_char_and_length=20((unsigned=20= char=20*)=20from=20+=20i,=20&bytes);=0A=20=09=20=20if=20(CHAR_BYTE8_P=20= (c))=0A=20=09=20=20=20=20c=20=3D=20CHAR_TO_BYTE8=20(c);=0A-=09=20=20else=20= if=20(c=20>=3D=20256)=0A+=09=20=20else=20if=20(c=20>=3D=20128)=0A=20=09=20= =20=20=20return=20-1;=0A=20=09=20=20i=20+=3D=20bytes;=0A=20=09}=0Adiff=20= --git=20a/test/src/fns-tests.el=20b/test/src/fns-tests.el=0Aindex=20= bec5c03f9e..63423f622f=20100644=0A---=20a/test/src/fns-tests.el=0A+++=20= b/test/src/fns-tests.el=0A@@=20-318,7=20+318,10=20@@=20= fns-tests-base64-encode-string=0A=20=20=20(should=20(equal=20= (base64-encode-string=20"fooba")=20"Zm9vYmE=3D"))=0A=20=20=20(should=20= (equal=20(base64-encode-string=20"foobar")=20"Zm9vYmFy"))=0A=20=20=20= (should=20(equal=20(base64-encode-string=20"\x14\xfb\x9c\x03\xd9\x7e")=20= "FPucA9l+"))=0A-=20=20(should=20(equal=20(base64-encode-string=20= "\x14\xfb\x9c\x03\xd9\x7f")=20"FPucA9l/")))=0A+=20=20(should=20(equal=20= (base64-encode-string=20"\x14\xfb\x9c\x03\xd9\x7f")=20"FPucA9l/"))=0A+=0A= +=20=20(should-error=20(base64-encode-string=20"=C6=92"))=0A+=20=20= (should-error=20(base64-encode-string=20"=C3=BC")))=0A=20=0A=20= (ert-deftest=20fns-test-base64url-encode-region=20()=0A=20=20=20;;=20url=20= variant=20with=20padding=0A@@=20-360,7=20+363,11=20@@=20= fns-test-base64url-encode-region=0A=20=20=20(should=20(equal=20= (fns-tests--with-region=20base64url-encode-region=20= (fns-tests--string-repeat=20"\x14\xfb\x9c\x03\xd9\x7e"=2010)=20t)=0A=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (fns-tests--string-repeat=20"FPucA9l-"=2010)))=0A=20=20=20(should=20= (equal=20(fns-tests--with-region=20base64url-encode-region=20= (fns-tests--string-repeat=20"\x14\xfb\x9c\x03\xd9\x7f"=2010)=20t)=0A-=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(fns-tests--string-repeat=20= "FPucA9l_"=2010))))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (fns-tests--string-repeat=20"FPucA9l_"=2010)))=0A+=0A+=20=20= (should-error=20(fns-tests--with-region=20base64url-encode-region=20= "=C6=92"))=0A+=20=20(should-error=20(fns-tests--with-region=20= base64url-encode-region=20"=C3=BC")))=0A+=0A=20=0A=20(ert-deftest=20= fns-test-base64url-encode-string=20()=0A=20=20=20;;=20url=20variant=20= with=20padding=0A@@=20-394,7=20+401,10=20@@=20= fns-test-base64url-encode-string=0A=20=20=20(should=20(equal=20= (base64url-encode-string=20(fns-tests--string-repeat=20"fooba"=2015)=20= t)=20(fns-tests--string-repeat=20"Zm9vYmFmb29iYWZvb2Jh"=205)))=0A=20=20=20= (should=20(equal=20(base64url-encode-string=20(fns-tests--string-repeat=20= "foobar"=2015)=20t)=20(concat=20(fns-tests--string-repeat=20= "Zm9vYmFyZm9vYmFy"=207)=20"Zm9vYmFy")))=0A=20=20=20(should=20(equal=20= (base64url-encode-string=20(fns-tests--string-repeat=20= "\x14\xfb\x9c\x03\xd9\x7e"=2010)=20t)=20(fns-tests--string-repeat=20= "FPucA9l-"=2010)))=0A-=20=20(should=20(equal=20(base64url-encode-string=20= (fns-tests--string-repeat=20"\x14\xfb\x9c\x03\xd9\x7f"=2010)=20t)=20= (fns-tests--string-repeat=20"FPucA9l_"=2010))))=0A+=20=20(should=20= (equal=20(base64url-encode-string=20(fns-tests--string-repeat=20= "\x14\xfb\x9c\x03\xd9\x7f"=2010)=20t)=20(fns-tests--string-repeat=20= "FPucA9l_"=2010)))=0A+=0A+=20=20(should-error=20(base64url-encode-string=20= "=C6=92"))=0A+=20=20(should-error=20(base64url-encode-string=20"=C3=BC")))= =0A=20=0A=20(ert-deftest=20fns-tests-base64-decode-string=20()=0A=20=20=20= ;;=20standard=20variant=20RFC2045=0A--=20=0A2.32.0=20(Apple=20Git-132)=0A= =0A= --Apple-Mail=_3350BD54-E5A1-4E1B-8A43-5A0451D8906C--