Check Visualizer.getWaveForm input array size

Bug: 288898397
Test: atest android.media.audio.cts.VisualizerTest
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:6917a11b6f18f3a939b2d82d48311068ce5f1a59)
Merged-In: Ie545e2bc7dc8627ad8ffe9f9b611ecb5b6e42eb7
Change-Id: Ie545e2bc7dc8627ad8ffe9f9b611ecb5b6e42eb7
This commit is contained in:
Shunkai Yao
2023-07-07 23:53:26 +00:00
parent c5cbf47072
commit 087c3dcfbb

View File

@@ -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);
}
}