summaryrefslogtreecommitdiffstats
path: root/src/plugins/pulseaudio
diff options
context:
space:
mode:
authorLing Hu <ling.hu@nokia.com>2011-11-14 14:37:40 +1000
committerQt by Nokia <qt-info@nokia.com>2011-11-14 10:44:04 +0100
commitd6c5d9faa6010f74bf23abbf404d395e01e077ac (patch)
tree2b14a963d1d63a24950244325b3efad846c44600 /src/plugins/pulseaudio
parent956526a9fb769acc66b376be0b051c0108a06f21 (diff)
Add additional protection on the write size in QAudioOuput(pulseaudio)
Check and cap the write size in pull mode to handle the case where user returned an invalid write size through QIODevice Change-Id: Ie0610a63f1d5400fba87f32a99bdc38479e0e7e8 Reviewed-by: Michael Goddard <michael.goddard@nokia.com> Reviewed-by: Jonas Rabbe <jonas.rabbe@nokia.com>
Diffstat (limited to 'src/plugins/pulseaudio')
-rw-r--r--src/plugins/pulseaudio/qaudiooutput_pulse.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/plugins/pulseaudio/qaudiooutput_pulse.cpp b/src/plugins/pulseaudio/qaudiooutput_pulse.cpp
index c068373bf..bcc1d331e 100644
--- a/src/plugins/pulseaudio/qaudiooutput_pulse.cpp
+++ b/src/plugins/pulseaudio/qaudiooutput_pulse.cpp
@@ -371,6 +371,11 @@ void QPulseAudioOutput::userFeed()
int audioBytesPulled = m_audioSource->read(m_audioBuffer, input);
Q_ASSERT(audioBytesPulled <= input);
if (audioBytesPulled > 0) {
+ if (audioBytesPulled > input) {
+ qWarning() << "QPulseAudioOutput::userFeed() - Invalid audio data size provided from user:"
+ << audioBytesPulled << "should be less than" << input;
+ audioBytesPulled = input;
+ }
qint64 bytesWritten = write(m_audioBuffer, audioBytesPulled);
Q_ASSERT(bytesWritten == audioBytesPulled); //unfinished write should not happen since the data provided is less than writableSize
}