Mercurial > hg-stable
diff mercurial/obsolete.py @ 34408:b6692ba7d5b0
obsmarker: crash more helpfully when metadata fields are >255bytes (issue5681)
Various mutators fail when attempting to write obsmarkers with
metadata fields longer than 255 bytes, since the length of
mwetadata fields is stored in u8s. This change raises a more
helpful error in such circumstances.
Differential Revision: https://phab.mercurial-scm.org/D865
author | Simon Whitaker <swhitaker@fb.com> |
---|---|
date | Sun, 01 Oct 2017 12:54:35 +0100 |
parents | ddcef6d0b0ef |
children | 014d467f9d08 |
line wrap: on
line diff
--- a/mercurial/obsolete.py Sun Oct 01 03:31:32 2017 -0700 +++ b/mercurial/obsolete.py Sun Oct 01 12:54:35 2017 +0100 @@ -416,6 +416,14 @@ for key, value in metadata: lk = len(key) lv = len(value) + if lk > 255: + msg = ('obsstore metadata key cannot be longer than 255 bytes' + ' (key "%s" is %u bytes)') % (key, lk) + raise error.ProgrammingError(msg) + if lv > 255: + msg = ('obsstore metadata value cannot be longer than 255 bytes' + ' (value "%s" for key "%s" is %u bytes)') % (value, key, lv) + raise error.ProgrammingError(msg) data.append(lk) data.append(lv) totalsize += lk + lv