From afef866a44cd65fef292c174cad445b3fb526400 Mon Sep 17 00:00:00 2001 From: Luca Milanesio Date: Wed, 6 Mar 2019 11:30:07 +0000 Subject: [PATCH] Move throw of PackInvalidException outside the catch When a packfile is invalid, throw an exception explicitly outside any catch scope, so that is not accidentally caught by the generic catch-all cause, which would set the packfile as valid again. Flagging an invalid packfile as valid again would have dangerous consequences such as the corruption of the in-memory packlist. Bug: 544199 Change-Id: If7a3188a68d7985776b509d636d5ddf432bec798 Signed-off-by: Luca Milanesio --- .../src/org/eclipse/jgit/internal/storage/file/PackFile.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackFile.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackFile.java index 2ca9e83f1..cbf745213 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackFile.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackFile.java @@ -643,9 +643,10 @@ public class PackFile implements Iterable { } private void doOpen() throws IOException { + if (invalid) { + throw new PackInvalidException(packFile); + } try { - if (invalid) - throw new PackInvalidException(packFile); synchronized (readLock) { fd = new RandomAccessFile(packFile, "r"); //$NON-NLS-1$ length = fd.length();