Mercurial > hg-stable
changeset 42937:7e9997041781
amend: prevent '\n' in the note string
This comes from the evolve function. I'm not sure why this check was missing in
core, since it was present when the length check was added to evolve.
I didn't flag this as BC because 530b7361e3a9 mentioned this argument wasn't
added to the release notes due to no display capability, and that hasn't changed
AFAIK.
Differential Revision: https://phab.mercurial-scm.org/D6854
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Sat, 14 Sep 2019 18:44:18 -0400 |
parents | e4803231f538 |
children | 09d46b90f6f9 |
files | hgext/amend.py mercurial/cmdutil.py |
diffstat | 2 files changed, 14 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/amend.py Sat Sep 14 15:13:16 2019 -0400 +++ b/hgext/amend.py Sat Sep 14 18:44:18 2019 -0400 @@ -16,7 +16,6 @@ from mercurial import ( cmdutil, commands, - error, pycompat, registrar, ) @@ -50,8 +49,8 @@ See :hg:`help commit` for more details. """ opts = pycompat.byteskwargs(opts) - if len(opts['note']) > 255: - raise error.Abort(_("cannot store a note of more than 255 bytes")) + cmdutil.checknotesize(ui, opts) + with repo.wlock(), repo.lock(): if not opts.get('logfile'): opts['message'] = opts.get('message') or repo['.'].description()
--- a/mercurial/cmdutil.py Sat Sep 14 15:13:16 2019 -0400 +++ b/mercurial/cmdutil.py Sat Sep 14 18:44:18 2019 -0400 @@ -210,6 +210,18 @@ return datemaydiffer +def checknotesize(ui, opts): + """ make sure note is of valid format """ + + note = opts.get('note') + if not note: + return + + if len(note) > 255: + raise error.Abort(_(b"cannot store a note of more than 255 bytes")) + if b'\n' in note: + raise error.Abort(_(b"note cannot contain a newline")) + def ishunk(x): hunkclasses = (crecordmod.uihunk, patch.recordhunk) return isinstance(x, hunkclasses)