From 1cc1fb23db7599bc5b152b2ae903ef1bf4a6d363 Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Thu, 20 Aug 2009 09:59:43 -0700 Subject: [PATCH] Ensure the commit body is parsed before getting the committer If we have done any sort of revision traversals earlier the RevWalk may have discarded the body of the commit, even if we really wanted it. This can lead to an NPE inside of the getCommitterIdent or getAuthorIdent methods, so its a good idea to ensure the body has been parsed first. This turns into a quick no-op if it has already been parsed, so its relatively simple to always check first. Signed-off-by: Shawn O. Pearce --- .../java/com/google/gerrit/server/ssh/commands/Receive.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/google/gerrit/server/ssh/commands/Receive.java b/src/main/java/com/google/gerrit/server/ssh/commands/Receive.java index 1165da55a2..5ea4e0e7a9 100644 --- a/src/main/java/com/google/gerrit/server/ssh/commands/Receive.java +++ b/src/main/java/com/google/gerrit/server/ssh/commands/Receive.java @@ -59,6 +59,7 @@ import org.kohsuke.args4j.CmdLineException; import org.kohsuke.args4j.Option; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.spearce.jgit.errors.MissingObjectException; import org.spearce.jgit.lib.Constants; import org.spearce.jgit.lib.ObjectId; import org.spearce.jgit.lib.PersonIdent; @@ -1090,7 +1091,9 @@ final class Receive extends AbstractGitCommand { String mergedIntoRef; } - private boolean validCommitter(final ReceiveCommand cmd, final RevCommit c) { + private boolean validCommitter(final ReceiveCommand cmd, final RevCommit c) + throws MissingObjectException, IOException { + rp.getRevWalk().parseBody(c); final PersonIdent committer = c.getCommitterIdent(); final PersonIdent author = c.getAuthorIdent();