Mercurial > hg
changeset 7035:9d023ef7b467
forbid username with '\n' at the changelog level
It was already forbidden for ui.username() but no verification were
made for username passed through the commandline.
author | Benoit Boissinot <benoit.boissinot@ens-lyon.org> |
---|---|
date | Sat, 13 Sep 2008 17:46:09 +0200 |
parents | 3e49127bcec3 |
children | bfad9865b1dc |
files | mercurial/changelog.py tests/test-username-newline tests/test-username-newline.out |
diffstat | 3 files changed, 39 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/changelog.py Wed Sep 10 22:37:07 2008 +0200 +++ b/mercurial/changelog.py Sat Sep 13 17:46:09 2008 +0200 @@ -6,7 +6,8 @@ # of the GNU General Public License, incorporated herein by reference. from node import bin, hex, nullid -from revlog import revlog +from revlog import revlog, RevlogError +from i18n import _ import util def _string_escape(text): @@ -178,6 +179,9 @@ def add(self, manifest, list, desc, transaction, p1=None, p2=None, user=None, date=None, extra={}): + user = user.strip() + if "\n" in user: + raise RevlogError(_("username %s contains a newline") % `user`) user, desc = util.fromlocal(user), util.fromlocal(desc) if date:
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-username-newline Sat Sep 13 17:46:09 2008 +0200 @@ -0,0 +1,22 @@ +#!/bin/sh +# + +hg init foo +cd foo +touch a + + +unset HGUSER +echo "[ui]" >> .hg/hgrc +echo "username= foo" >> .hg/hgrc +echo " bar1" >> .hg/hgrc + +hg ci -Am m + +rm .hg/hgrc + +HGUSER=`(echo foo; echo bar2)` hg ci -Am m + +hg ci -Am m -u "`(echo foo; echo bar3)`" + +true
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-username-newline.out Sat Sep 13 17:46:09 2008 +0200 @@ -0,0 +1,12 @@ +adding a +transaction abort! +rollback completed +abort: username 'foo\nbar1' contains a newline + +transaction abort! +rollback completed +abort: username 'foo\nbar2' contains a newline + +transaction abort! +rollback completed +abort: username 'foo\nbar3' contains a newline!