Thanks for the explanation and merging the fix!

On Thu, 3 Oct 2019, 00:09 Yuya Nishihara, <y...@tcha.org> wrote:

> On Wed, 02 Oct 2019 21:35:52 +0200, Floris Bruynooghe wrote:
> > On Tue 01 Oct 2019 at 08:15 +0900, Yuya Nishihara wrote:
> > > On Mon, 30 Sep 2019 21:22:17 +0200, Floris Bruynooghe wrote:
> > >> # HG changeset patch
> > >> # User Floris Bruynooghe <f...@google.com>
> > >> # Date 1569794518 -7200
> > >> #      Mon Sep 30 00:01:58 2019 +0200
> > >> # Node ID 7c69ab0787ac4931a5d4568704eb88e86d9c6b83
> > >> # Parent  bbf77341a956b3ba40ae87538fcd200b34c5a3e5
> > >> patchbomb: protect email addresses from shell
> > >
> > >> diff --git a/mercurial/mail.py b/mercurial/mail.py
> > >> --- a/mercurial/mail.py
> > >> +++ b/mercurial/mail.py
> > >> @@ -152,7 +152,8 @@ def _smtp(ui):
> > >>  def _sendmail(ui, sender, recipients, msg):
> > >>      '''send mail using sendmail.'''
> > >>      program = ui.config('email', 'method')
> > >> -    stremail = lambda x: stringutil.email(encoding.strtolocal(x))
> > >> +    stremail = lambda x: \
> > >> +        procutil.quote(stringutil.email(encoding.strtolocal(x)))
> > >
> > > procutil.shellquote() ?
> >
> > Sure, I should have spotted that...
> >
> > > I don't think shlex supports byte strings on Python 3, and maybe it
> wouldn't
> > > respect the cmd.exe rule on Windows.
> >
> > Hmm, I don't think I follow everything correctly.  encoding.strtolocal()
> > returns bytes?
>
> Yes.
>
> > But stringutils.email() uses .find('>'), that is on py3
> > this is b'foo'.find('<') and thus mixes unicode and bytes.
>
> We have code transformer which basically rewrites every '' to b''.
>
> https://www.mercurial-scm.org/wiki/Python3#Source_Rewriting_Module_Importer
>
> Anyway, this patch has already been queued, and I sent a follow-up patch
> mostly
> identical to your V3, thanks.
>
>
_______________________________________________
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel

Reply via email to