From 93161e46e73a93e20e5fa45946457b32fdf0613d Mon Sep 17 00:00:00 2001 From: Alexander Zuev Date: Wed, 26 Oct 2022 21:29:01 +0000 Subject: [PATCH] 8293742: Better Banking of Sounds Reviewed-by: rhalade, azvegint, prr --- .../com/sun/media/sound/JARSoundbankReader.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/java.desktop/share/classes/com/sun/media/sound/JARSoundbankReader.java b/src/java.desktop/share/classes/com/sun/media/sound/JARSoundbankReader.java index 967d35d31dc..a207d69c355 100644 --- a/src/java.desktop/share/classes/com/sun/media/sound/JARSoundbankReader.java +++ b/src/java.desktop/share/classes/com/sun/media/sound/JARSoundbankReader.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2022, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -48,6 +48,13 @@ import sun.reflect.misc.ReflectUtil; */ public final class JARSoundbankReader extends SoundbankReader { + /* + * Name of the system property that enables the Jar soundbank loading + * true if jar sound bank is allowed to be loaded + * default is false + */ + private final static String JAR_SOUNDBANK_ENABLED = "jdk.sound.jarsoundbank"; + private static boolean isZIP(URL url) { boolean ok = false; try { @@ -70,8 +77,10 @@ public final class JARSoundbankReader extends SoundbankReader { @SuppressWarnings("deprecation") public Soundbank getSoundbank(URL url) throws InvalidMidiDataException, IOException { - if (!isZIP(url)) + Objects.requireNonNull(url); + if (!Boolean.getBoolean(JAR_SOUNDBANK_ENABLED) || !isZIP(url)) return null; + ArrayList soundbanks = new ArrayList<>(); URLClassLoader ucl = URLClassLoader.newInstance(new URL[]{url}); InputStream stream = ucl.getResourceAsStream( @@ -116,6 +125,7 @@ public final class JARSoundbankReader extends SoundbankReader { @Override public Soundbank getSoundbank(File file) throws InvalidMidiDataException, IOException { + Objects.requireNonNull(file); return getSoundbank(file.toURI().toURL()); } }