Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6917a11b authored by Shunkai Yao's avatar Shunkai Yao
Browse files

Check Visualizer.getWaveForm input array size

Bug: 288898397
Test: atest android.media.audio.cts.VisualizerTest
Change-Id: Ie545e2bc7dc8627ad8ffe9f9b611ecb5b6e42eb7
parent b459b8ce
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -455,11 +455,13 @@ public class Visualizer {
     * a number of consecutive 8-bit (unsigned) mono PCM samples equal to the capture size returned
     * by {@link #getCaptureSize()}.
     * <p>This method must be called when the Visualizer is enabled.
     * @param waveform array of bytes where the waveform should be returned
     * @param waveform array of bytes where the waveform should be returned, array length must be
     * at least equals to the capture size returned by {@link #getCaptureSize()}.
     * @return {@link #SUCCESS} in case of success,
     * {@link #ERROR_NO_MEMORY}, {@link #ERROR_INVALID_OPERATION} or {@link #ERROR_DEAD_OBJECT}
     * in case of failure.
     * @throws IllegalStateException
     * @throws IllegalArgumentException
     */
    public int getWaveForm(byte[] waveform)
    throws IllegalStateException {
@@ -467,6 +469,12 @@ public class Visualizer {
            if (mState != STATE_ENABLED) {
                throw(new IllegalStateException("getWaveForm() called in wrong state: "+mState));
            }
            int captureSize = getCaptureSize();
            if (captureSize > waveform.length) {
                throw(new IllegalArgumentException("getWaveForm() called with illegal size: "
                                                   + waveform.length + " expecting at least "
                                                   + captureSize + " bytes"));
            }
            return native_getWaveForm(waveform);
        }
    }