<Sound Dev> [13] Review Request: 8221445 FastSysexMessage constructor crashes MIDI receiption thread

Philip Race philip.race at oracle.com
Sun Apr 7 23:07:56 UTC 2019



On 4/4/19, 11:22 PM, Sergey Bylokhov wrote:
> Hello, Audio Guru.
> Please review the fix for jdk13.
> Bug: https://bugs.openjdk.java.net/browse/JDK-8221445
> Fix: http://cr.openjdk.java.net/~serb/8221445/webrev.00
> We can get unexpected ArrayIndexOutOfBoundsException, when we create 
> the FastSysexMessage in this place:
> http://hg.openjdk.java.net/jdk/jdk/file/532e88de77eb/src/java.desktop/share/classes/com/sun/media/sound/AbstractMidiDevice.java#l684 
> Th root cause of the failure is the empty "data", which is incorrect 
> sysex message. According to the specification in this case the 
> InvalidMidiDataException should be thrown. And the code above which 
> creates the FastSysexMessage is ready for this exception:
>   } catch (InvalidMidiDataException e) {
>     // this happens when invalid data comes over the wire. Ignore it.
>     return;
>   }
> Wrong exception is occurred, because in the FastSysexMessage we do not 
> throw any exceptions, but instead we call super.setMessage() for the 
> broken data with assumption that the parent class will throw correct 
> exception. But unfortunately the parent class(unlike FastSysexMessage) 
> does not have the check for the empty array.
> PS: It is also interesting the in some cases we throw 
> IndexOutOfBoundsException which is not specified in the javadoc, I'll 
> update the spec later.

More information about the sound-dev mailing list