]> source.dussan.org Git - jgit.git/commitdiff
Move throw of PackInvalidException outside the catch 63/138163/5
authorLuca Milanesio <luca.milanesio@gmail.com>
Wed, 6 Mar 2019 11:30:07 +0000 (11:30 +0000)
committerMatthias Sohn <matthias.sohn@sap.com>
Tue, 12 Mar 2019 14:06:05 +0000 (15:06 +0100)
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 <luca.milanesio@gmail.com>
org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackFile.java

index 2ca9e83f1c0cc70d6f100667a460822dbc2a1fba..cbf74521314bf1c3bdbb1b13873be9844af8669b 100644 (file)
@@ -643,9 +643,10 @@ public class PackFile implements Iterable<PackIndex.MutableEntry> {
        }
 
        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();