usbaudio: Return 0 bytes on failure in capture
Return 0 bytes from in_read() in failure conditions so that invalid
data is not recorded.
Change-Id: I9a6294e4162fa642fd7e160a32d1ad16f255ff62
diff --git a/modules/usbaudio/audio_hw.c b/modules/usbaudio/audio_hw.c
index 35f7705..78fa7c5 100644
--- a/modules/usbaudio/audio_hw.c
+++ b/modules/usbaudio/audio_hw.c
@@ -852,6 +852,8 @@
num_read_buff_bytes =
convert_32_to_16(read_buff, num_read_buff_bytes / 4, out_buff);
} else {
+ LOG_ALWAYS_FATAL("Unsupported format");
+ num_read_buff_bytes = 0;
goto err;
}
}
@@ -875,6 +877,8 @@
/* no need to acquire in->dev->lock to read mic_muted here as we don't change its state */
if (num_read_buff_bytes > 0 && in->dev->mic_muted)
memset(buffer, 0, num_read_buff_bytes);
+ } else {
+ num_read_buff_bytes = 0;
}
err: