From 80c150c8e9dd52192b8db4c63c06304ada63989b Mon Sep 17 00:00:00 2001 From: Max Weber Date: Wed, 1 Jun 2022 12:06:48 -0600 Subject: [PATCH] ClientLoader: don't fail patching to hidden files FileOutputStream (by design) passes FILE_ATTRIBUTE_NORMAL and CREATE_ALWAYS to CreateFile, which causes it to fail with access denied if it is opening a FILE_ATTRIBUTE_HIDDEN or FILE_ATTRIBUTE_SYSTEM file See JDK-8047342 --- .../src/main/java/net/runelite/client/rs/ClientLoader.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/rs/ClientLoader.java b/runelite-client/src/main/java/net/runelite/client/rs/ClientLoader.java index 1966f6fbf4..1912f95bf7 100644 --- a/runelite-client/src/main/java/net/runelite/client/rs/ClientLoader.java +++ b/runelite-client/src/main/java/net/runelite/client/rs/ClientLoader.java @@ -36,7 +36,6 @@ import java.applet.Applet; import java.io.ByteArrayOutputStream; import java.io.DataInputStream; import java.io.File; -import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -487,7 +486,7 @@ public class ClientLoader implements Supplier } } - try (HashingOutputStream hos = new HashingOutputStream(Hashing.sha512(), new FileOutputStream(PATCHED_CACHE)); + try (HashingOutputStream hos = new HashingOutputStream(Hashing.sha512(), java.nio.file.Files.newOutputStream(PATCHED_CACHE.toPath())); InputStream patch = ClientLoader.class.getResourceAsStream("/client.patch")) { new FileByFileV1DeltaApplier().applyDelta(VANILLA_CACHE, patch, hos);