diff mercurial/changelog.py @ 8424:c5b3d3e30de7

changelog: refuse to add revisions with empty usernames An empty username or a username with a "\n" will make the revision text contain two "\n\n" sequences -> corrupt repository. The problem is that changelog.read expects to find exactly one "\n\n" separator and thus cannot unpack the revision.
author Martin Geisler <mg@lazybytes.net>
date Sat, 16 May 2009 11:12:49 +0200
parents bd8f44638847
children 3acc6279b364
line wrap: on
line diff
--- a/mercurial/changelog.py	Fri May 15 16:12:09 2009 +0200
+++ b/mercurial/changelog.py	Sat May 16 11:12:49 2009 +0200
@@ -202,6 +202,11 @@
                   user=None, date=None, extra={}):
 
         user = user.strip()
+        # An empty username or a username with a "\n" will make the
+        # revision text contain two "\n\n" sequences -> corrupt
+        # repository since read cannot unpack the revision.
+        if not user:
+            raise error.RevlogError(_("empty username"))
         if "\n" in user:
             raise error.RevlogError(_("username %s contains a newline")
                                     % repr(user))