From e26d0c8acebd0b602afa9beb8d676b77ca082c12 Mon Sep 17 00:00:00 2001 From: Dave Borowitz Date: Mon, 15 Jun 2015 14:54:13 -0400 Subject: [PATCH] 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 --- .../org/eclipse/jgit/transport/BaseReceivePack.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) 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 111a22734..63b9bbbd3 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 void sendAdvertisedRefs(final RefAdvertiser adv) * @throws IOException */ protected void recvCommands() throws IOException { + FirstLine firstLine = null; for (;;) { String rawLine; try { @@ -1062,18 +1063,21 @@ protected void recvCommands() throws IOException { 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) {