Browse Source

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
stable-4.1
Dave Borowitz 9 years ago
parent
commit
e26d0c8ace
  1. 12
      org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseReceivePack.java

12
org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseReceivePack.java

@ -1043,6 +1043,7 @@ public abstract class BaseReceivePack {
* @throws IOException * @throws IOException
*/ */
protected void recvCommands() throws IOException { protected void recvCommands() throws IOException {
FirstLine firstLine = null;
for (;;) { for (;;) {
String rawLine; String rawLine;
try { try {
@ -1062,18 +1063,21 @@ public abstract class BaseReceivePack {
continue; continue;
} }
if (commands.isEmpty()) { if (firstLine == null) {
final FirstLine firstLine = new FirstLine(line); firstLine = new FirstLine(line);
enabledCapabilities = firstLine.getCapabilities(); enabledCapabilities = firstLine.getCapabilities();
line = firstLine.getLine(); line = firstLine.getLine();
if (line.equals(GitProtocolConstants.OPTION_PUSH_CERT)) if (line.equals(GitProtocolConstants.OPTION_PUSH_CERT)) {
pushCertificateParser.receiveHeader(pckIn, pushCertificateParser.receiveHeader(pckIn,
!isBiDirectionalPipe()); !isBiDirectionalPipe());
continue;
}
} }
if (line.equals(PushCertificateParser.BEGIN_SIGNATURE)) { if (rawLine.equals(PushCertificateParser.BEGIN_SIGNATURE)) {
pushCertificateParser.receiveSignature(pckIn); pushCertificateParser.receiveSignature(pckIn);
continue;
} }
if (line.length() < 83) { if (line.length() < 83) {

Loading…
Cancel
Save