Mercurial > hg
changeset 23011:006a81d07e57
bundle2: detect and disallow a negative chunk size
We have no usage planned for 2/3 of them and the support for the planned
usecase is not here yet. So we raise a BundleValueError when encountered
author | Pierre-Yves David <pierre-yves.david@fb.com> |
---|---|
date | Wed, 15 Oct 2014 03:27:25 -0700 |
parents | 73f394f4affc |
children | bdb3349cf7ab |
files | mercurial/bundle2.py |
diffstat | 1 files changed, 9 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/bundle2.py Wed Oct 15 03:22:47 2014 -0700 +++ b/mercurial/bundle2.py Wed Oct 15 03:27:25 2014 -0700 @@ -509,6 +509,9 @@ self.ui.debug('reading bundle2 stream parameters\n') params = {} paramssize = self._unpack(_fstreamparamsize)[0] + if paramssize < 0: + raise error.BundleValueError('negative bundle param size: %i' + % paramssize) if paramssize: for p in self._readexact(paramssize).split(' '): p = p.split('=', 1) @@ -558,6 +561,9 @@ returns None if empty""" headersize = self._unpack(_fpartheadersize)[0] + if headersize < 0: + raise error.BundleValueError('negative part header size: %i' + % headersize) self.ui.debug('part header size: %i\n' % headersize) if headersize: return self._readexact(headersize) @@ -765,6 +771,9 @@ payloadsize = self._unpack(_fpayloadsize)[0] self.ui.debug('payload chunk size: %i\n' % payloadsize) while payloadsize: + if payloadsize < 0: + msg = 'negative payload chunk size: %i' % payloadsize + raise error.BundleValueError(msg) yield self._readexact(payloadsize) payloadsize = self._unpack(_fpayloadsize)[0] self.ui.debug('payload chunk size: %i\n' % payloadsize)