diff options
author | Ling Hu <ling.hu@nokia.com> | 2011-11-14 14:37:40 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-11-14 10:44:04 +0100 |
commit | d6c5d9faa6010f74bf23abbf404d395e01e077ac (patch) | |
tree | 2b14a963d1d63a24950244325b3efad846c44600 /src/plugins/pulseaudio | |
parent | 956526a9fb769acc66b376be0b051c0108a06f21 (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.cpp | 5 |
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 } |