From: Dave Borowitz Date: Mon, 15 Jun 2015 18:54:13 +0000 (-0400) Subject: BaseReceivePack: fix reading cert lines in command loop X-Git-Tag: v4.1.0.201509280440-r~97 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=refs%2Fchanges%2F93%2F50293%2F4;p=jgit.git BaseReceivePack: fix reading cert lines in command loop Add a missing continues to prevent falling through to the command parsing section. The first continue happens when the command list is empty, so change the condition to see whether we have read the first line, rather than any commands. Fix comparison to BEGIN_SIGNATURE to use raw line with newline. Change-Id: If3d92f5ceade8ba7605847a4b2bc55ff17d119ac --- diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseReceivePack.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseReceivePack.java index 111a227344..63b9bbbd38 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseReceivePack.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseReceivePack.java @@ -1043,6 +1043,7 @@ public abstract class BaseReceivePack { * @throws IOException */ protected void recvCommands() throws IOException { + FirstLine firstLine = null; for (;;) { String rawLine; try { @@ -1062,18 +1063,21 @@ public abstract class BaseReceivePack { continue; } - if (commands.isEmpty()) { - final FirstLine firstLine = new FirstLine(line); + if (firstLine == null) { + firstLine = new FirstLine(line); enabledCapabilities = firstLine.getCapabilities(); line = firstLine.getLine(); - if (line.equals(GitProtocolConstants.OPTION_PUSH_CERT)) + if (line.equals(GitProtocolConstants.OPTION_PUSH_CERT)) { pushCertificateParser.receiveHeader(pckIn, !isBiDirectionalPipe()); + continue; + } } - if (line.equals(PushCertificateParser.BEGIN_SIGNATURE)) { + if (rawLine.equals(PushCertificateParser.BEGIN_SIGNATURE)) { pushCertificateParser.receiveSignature(pckIn); + continue; } if (line.length() < 83) {