src/share/classes/com/sun/media/sound/WaveFileReader.java

Print this page

        

*** 51,67 **** public final class WaveFileReader extends SunFileReader { private static final int MAX_READ_LENGTH = 12; /** - * Constructs a new WaveFileReader object. - */ - public WaveFileReader() { - } - - - /** * Obtains the audio file format of the input stream provided. The stream must * point to valid audio file data. In general, audio file providers may * need to read some data from the stream before determining whether they * support it. These parsers must * be able to mark the stream, read enough data to determine whether they --- 51,60 ----
*** 302,311 **** --- 295,307 ---- // we don't support any other WAVE formats.... throw new UnsupportedAudioFileException("Not a supported WAV file"); } // channels channels = rlshort(dis); nread += 2; + if (channels <= 0) { + throw new UnsupportedAudioFileException("Invalid number of channels"); + } // sample rate. sampleRate = rllong(dis); nread += 4; // this is the avgBytesPerSec
*** 314,323 **** --- 310,322 ---- // this is blockAlign value blockAlign = rlshort(dis); nread += 2; // this is the PCM-specific value bitsPerSample sampleSizeInBits = (int)rlshort(dis); nread += 2; + if (sampleSizeInBits <= 0) { + throw new UnsupportedAudioFileException("Invalid bitsPerSample"); + } // if sampleSizeInBits==8, we need to use PCM_UNSIGNED if ((sampleSizeInBits==8) && encoding.equals(AudioFormat.Encoding.PCM_SIGNED)) encoding = AudioFormat.Encoding.PCM_UNSIGNED;
*** 371,377 **** return new WaveFileFormat(AudioFileFormat.Type.WAVE, totallength, format, dataLength / format.getFrameSize()); } - } --- 370,375 ----