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:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user