summaryrefslogtreecommitdiff
path: root/java/openjdk6/files/icedtea/security/20130416/8004261.patch
diff options
context:
space:
mode:
Diffstat (limited to 'java/openjdk6/files/icedtea/security/20130416/8004261.patch')
-rw-r--r--java/openjdk6/files/icedtea/security/20130416/8004261.patch142
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;
+