ModuleLoader: sync file before renaming
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
This commit is contained in:
parent
d40ac7f89d
commit
16890a659e
@ -22,7 +22,6 @@ import java.io.File;
|
|||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.OutputStream;
|
|
||||||
import java.net.HttpURLConnection;
|
import java.net.HttpURLConnection;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
@ -159,7 +158,7 @@ public class ModuleLoader {
|
|||||||
tempFile = File.createTempFile("UNVERIFIED-", null, tmpDir);
|
tempFile = File.createTempFile("UNVERIFIED-", null, tmpDir);
|
||||||
MessageDigest digest = MessageDigest.getInstance("SHA-256");
|
MessageDigest digest = MessageDigest.getInstance("SHA-256");
|
||||||
try (final InputStream inputStream = connection.getInputStream();
|
try (final InputStream inputStream = connection.getInputStream();
|
||||||
final OutputStream outputStream = new FileOutputStream(tempFile)) {
|
final FileOutputStream outputStream = new FileOutputStream(tempFile)) {
|
||||||
int total = 0;
|
int total = 0;
|
||||||
while ((len = inputStream.read(input)) > 0) {
|
while ((len = inputStream.read(input)) > 0) {
|
||||||
total += len;
|
total += len;
|
||||||
@ -168,6 +167,7 @@ public class ModuleLoader {
|
|||||||
outputStream.write(input, 0, len);
|
outputStream.write(input, 0, len);
|
||||||
digest.update(input, 0, len);
|
digest.update(input, 0, len);
|
||||||
}
|
}
|
||||||
|
outputStream.getFD().sync();
|
||||||
}
|
}
|
||||||
if (!Arrays.equals(digest.digest(), modules.get(moduleName).bytes))
|
if (!Arrays.equals(digest.digest(), modules.get(moduleName).bytes))
|
||||||
throw new IOException("Incorrect file hash");
|
throw new IOException("Incorrect file hash");
|
||||||
|
Loading…
Reference in New Issue
Block a user