# HG changeset patch # User Jun Wu # Date 1483719145 0 # Node ID 18eb63ec847553acab57a62fb3951a16fd944545 # Parent dd897eb1699e84bf1ad5a6e79a2bddcc77cd8954 chgserver: check type passed to S channel It currently only supports the "system" type. Add an explicit check. diff -r dd897eb1699e -r 18eb63ec8475 mercurial/chgserver.py --- 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