diff options
Diffstat (limited to 'java/openjdk6/files/icedtea/security/20130416/8004261.patch')
-rw-r--r-- | java/openjdk6/files/icedtea/security/20130416/8004261.patch | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/java/openjdk6/files/icedtea/security/20130416/8004261.patch b/java/openjdk6/files/icedtea/security/20130416/8004261.patch new file mode 100644 index 000000000000..245d49e34c5f --- /dev/null +++ b/java/openjdk6/files/icedtea/security/20130416/8004261.patch @@ -0,0 +1,142 @@ +# HG changeset patch +# User andrew +# Date 1365774039 -3600 +# Node ID 0236ab95a0f15e35aef6edd91f58a5072784dccd +# Parent 8f5ad2cacf6fff8efd817c5373469037d945f3dc +8004261: Improve input validation +Reviewed-by: art, mschoene, amenkov + +diff --git a/src/share/classes/com/sun/media/sound/AbstractMidiDevice.java b/src/share/classes/com/sun/media/sound/AbstractMidiDevice.java +--- jdk/src/share/classes/com/sun/media/sound/AbstractMidiDevice.java ++++ jdk/src/share/classes/com/sun/media/sound/AbstractMidiDevice.java +@@ -56,7 +56,7 @@ + // from simultaneous creation and destruction + // reduces possibility of deadlock, compared to + // synchronizing to the class instance +- private Object traRecLock = new Object(); ++ private final Object traRecLock = new Object(); + + // DEVICE ATTRIBUTES + +@@ -474,7 +474,7 @@ + This is necessary for Receivers retrieved via MidiSystem.getReceiver() + (which opens the device implicitely). + */ +- protected abstract class AbstractReceiver implements Receiver { ++ abstract class AbstractReceiver implements Receiver { + private boolean open = true; + + +@@ -483,24 +483,24 @@ + Receiver. Therefore, subclasses should not override this method. + Instead, they should implement implSend(). + */ +- public synchronized void send(MidiMessage message, long timeStamp) { +- if (open) { +- implSend(message, timeStamp); +- } else { ++ @Override ++ public final synchronized void send(final MidiMessage message, ++ final long timeStamp) { ++ if (!open) { + throw new IllegalStateException("Receiver is not open"); + } ++ implSend(message, timeStamp); + } + +- +- protected abstract void implSend(MidiMessage message, long timeStamp); +- ++ abstract void implSend(MidiMessage message, long timeStamp); + + /** Close the Receiver. + * Here, the call to the magic method closeInternal() takes place. + * Therefore, subclasses that override this method must call + * 'super.close()'. + */ +- public void close() { ++ @Override ++ public final void close() { + open = false; + synchronized (AbstractMidiDevice.this.traRecLock) { + AbstractMidiDevice.this.getReceiverList().remove(this); +@@ -508,7 +508,7 @@ + AbstractMidiDevice.this.closeInternal(this); + } + +- protected boolean isOpen() { ++ final boolean isOpen() { + return open; + } + +diff --git a/src/share/classes/com/sun/media/sound/FastShortMessage.java b/src/share/classes/com/sun/media/sound/FastShortMessage.java +--- jdk/src/share/classes/com/sun/media/sound/FastShortMessage.java ++++ jdk/src/share/classes/com/sun/media/sound/FastShortMessage.java +@@ -32,7 +32,7 @@ + * + * @author Florian Bomers + */ +-class FastShortMessage extends ShortMessage { ++final class FastShortMessage extends ShortMessage { + private int packedMsg; + + public FastShortMessage(int packedMsg) throws InvalidMidiDataException { +diff --git a/src/share/classes/com/sun/media/sound/FastSysexMessage.java b/src/share/classes/com/sun/media/sound/FastSysexMessage.java +--- jdk/src/share/classes/com/sun/media/sound/FastSysexMessage.java ++++ jdk/src/share/classes/com/sun/media/sound/FastSysexMessage.java +@@ -32,7 +32,7 @@ + * + * @author Florian Bomers + */ +-class FastSysexMessage extends SysexMessage { ++final class FastSysexMessage extends SysexMessage { + + FastSysexMessage(byte[] data) throws InvalidMidiDataException { + super(data); +diff --git a/src/share/classes/com/sun/media/sound/MidiOutDevice.java b/src/share/classes/com/sun/media/sound/MidiOutDevice.java +--- jdk/src/share/classes/com/sun/media/sound/MidiOutDevice.java ++++ jdk/src/share/classes/com/sun/media/sound/MidiOutDevice.java +@@ -103,9 +103,9 @@ + + class MidiOutReceiver extends AbstractReceiver { + +- protected void implSend(MidiMessage message, long timeStamp) { +- int length = message.getLength(); +- int status = message.getStatus(); ++ void implSend(final MidiMessage message, final long timeStamp) { ++ final int length = message.getLength(); ++ final int status = message.getStatus(); + if (length <= 3 && status != 0xF0 && status != 0xF7) { + int packedMsg; + if (message instanceof ShortMessage) { +@@ -140,11 +140,15 @@ + } + nSendShortMessage(id, packedMsg, timeStamp); + } else { ++ final byte[] data; + if (message instanceof FastSysexMessage) { +- nSendLongMessage(id, ((FastSysexMessage) message).getReadOnlyMessage(), +- length, timeStamp); ++ data = ((FastSysexMessage) message).getReadOnlyMessage(); + } else { +- nSendLongMessage(id, message.getMessage(), length, timeStamp); ++ data = message.getMessage(); ++ } ++ final int dataLength = Math.min(length, data.length); ++ if (dataLength > 0) { ++ nSendLongMessage(id, data, dataLength, timeStamp); + } + } + } +diff --git a/src/share/classes/com/sun/media/sound/RealTimeSequencer.java b/src/share/classes/com/sun/media/sound/RealTimeSequencer.java +--- jdk/src/share/classes/com/sun/media/sound/RealTimeSequencer.java ++++ jdk/src/share/classes/com/sun/media/sound/RealTimeSequencer.java +@@ -1019,7 +1019,7 @@ + + class SequencerReceiver extends AbstractReceiver { + +- protected void implSend(MidiMessage message, long timeStamp) { ++ void implSend(MidiMessage message, long timeStamp) { + if (recording) { + long tickPos = 0; + |