Mercurial > hg
changeset 30727:18eb63ec8475
chgserver: check type passed to S channel
It currently only supports the "system" type. Add an explicit check.
author | Jun Wu <quark@fb.com> |
---|---|
date | Fri, 06 Jan 2017 16:12:25 +0000 |
parents | dd897eb1699e |
children | 7438cb35979a |
files | mercurial/chgserver.py |
diffstat | 1 files changed, 9 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/chgserver.py Fri Jan 06 16:11:03 2017 +0000 +++ b/mercurial/chgserver.py Fri Jan 06 16:12:25 2017 +0000 @@ -312,12 +312,15 @@ self.out.write(data) self.out.flush() - length = self.in_.read(4) - length, = struct.unpack('>I', length) - if length != 4: - raise error.Abort(_('invalid response')) - rc, = struct.unpack('>i', self.in_.read(4)) - return rc + if type == 'system': + length = self.in_.read(4) + length, = struct.unpack('>I', length) + if length != 4: + raise error.Abort(_('invalid response')) + rc, = struct.unpack('>i', self.in_.read(4)) + return rc + else: + raise error.ProgrammingError('invalid S channel type: %s' % type) _iochannels = [ # server.ch, ui.fp, mode