diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2019-01-06 16:10:03 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2019-01-06 16:10:03 +0000 |
| commit | 1b0fef3d25ed94518f4f6b1914a7d7e71aae80c5 (patch) | |
| tree | c2edf437731b5753f50d19c49ce28609c3d09ed5 /src/plugins | |
| parent | e7a02ec7fee6fee4eaa04a31f53120c62caccbda (diff) | |
| download | qmmp-1b0fef3d25ed94518f4f6b1914a7d7e71aae80c5.tar.gz qmmp-1b0fef3d25ed94518f4f6b1914a7d7e71aae80c5.tar.bz2 qmmp-1b0fef3d25ed94518f4f6b1914a7d7e71aae80c5.zip | |
added realloc result checking
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@8589 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins')
| -rw-r--r-- | src/plugins/Effect/crossfade/crossfadeplugin.cpp | 20 | ||||
| -rw-r--r-- | src/plugins/Output/shout/shoutoutput.cpp | 11 | ||||
| -rw-r--r-- | src/plugins/Transports/http/httpstreamreader.cpp | 2 | ||||
| -rw-r--r-- | src/plugins/Transports/mms/mmsstreamreader.cpp | 15 |
4 files changed, 41 insertions, 7 deletions
diff --git a/src/plugins/Effect/crossfade/crossfadeplugin.cpp b/src/plugins/Effect/crossfade/crossfadeplugin.cpp index 29e76bd86..424bd5037 100644 --- a/src/plugins/Effect/crossfade/crossfadeplugin.cpp +++ b/src/plugins/Effect/crossfade/crossfadeplugin.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2009-2015 by Ilya Kotov <forkotov02@ya.ru> * + * Copyright (C) 2009-2019 by Ilya Kotov <forkotov02@ya.ru> * * Copyright (C) 2009 by Sebastian Pipping <sebastian@pipping.org> * * * * This program is free software; you can redistribute it and/or modify * @@ -65,11 +65,23 @@ void CrossfadePlugin::applyEffect(Buffer *b) if(m_buffer_at + b->samples > m_buffer_size) { m_buffer_size = m_buffer_at + b->samples; + float *tmp = m_buffer; m_buffer = (float *)realloc(m_buffer, m_buffer_size * sizeof(float)); + if(!m_buffer) + { + qWarning("CrossfadePlugin: unable to allocate %zu bytes", m_buffer_size); + m_buffer_size = 0; + if(tmp) + free(tmp); + } + } + + if(m_buffer) + { + memcpy(m_buffer + m_buffer_at, b->data, b->samples * sizeof(float)); + m_buffer_at += b->samples; + b->samples = 0; } - memcpy(m_buffer + m_buffer_at, b->data, b->samples * sizeof(float)); - m_buffer_at += b->samples; - b->samples = 0; } else if(m_buffer_at > 0) m_state = PROCESSING; diff --git a/src/plugins/Output/shout/shoutoutput.cpp b/src/plugins/Output/shout/shoutoutput.cpp index 9ca6e9a95..90a4b0b49 100644 --- a/src/plugins/Output/shout/shoutoutput.cpp +++ b/src/plugins/Output/shout/shoutoutput.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2017 by Ilya Kotov * + * Copyright (C) 2017-2019 by Ilya Kotov * * forkotov02@ya.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -98,7 +98,16 @@ qint64 ShoutOutput::writeAudio(unsigned char *data, qint64 maxSize) if(required_frames > m_soxr_buf_frames) { m_soxr_buf_frames = required_frames; + float *tmp = m_soxr_buf; m_soxr_buf = (float *)realloc(m_soxr_buf, m_soxr_buf_frames * sizeof(float) * chan); + if(!m_soxr_buf) + { + qWarning("ShoutOutput: unable to allocate %zu bytes", m_soxr_buf_frames * sizeof(float) * chan); + m_soxr_buf_frames = 0; + if(tmp) + free(tmp); + return -1; + } } size_t done = 0; diff --git a/src/plugins/Transports/http/httpstreamreader.cpp b/src/plugins/Transports/http/httpstreamreader.cpp index eb54bfeb8..5cba24d0c 100644 --- a/src/plugins/Transports/http/httpstreamreader.cpp +++ b/src/plugins/Transports/http/httpstreamreader.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2006-2018 by Ilya Kotov * + * Copyright (C) 2006-2019 by Ilya Kotov * * forkotov02@ya.ru * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/plugins/Transports/mms/mmsstreamreader.cpp b/src/plugins/Transports/mms/mmsstreamreader.cpp index 1acbbdb4c..620f23e07 100644 --- a/src/plugins/Transports/mms/mmsstreamreader.cpp +++ b/src/plugins/Transports/mms/mmsstreamreader.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2006-2013 by Ilya Kotov * + * Copyright (C) 2006-2019 by Ilya Kotov * * forkotov02@ya.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -165,7 +165,20 @@ void MMSStreamReader::run() if(m_buffer_at + to_read > m_buffer_size) { m_buffer_size = m_buffer_at + to_read; + char *tmp = m_buffer; m_buffer = (char *)realloc(m_buffer, m_buffer_size); + if(!m_buffer) + { + qWarning("MMSStreamReader: unable to allocate %lld bytes", m_buffer_size); + if(tmp) + free(tmp); + m_mutex.unlock(); + setErrorString(QString("unable to allocate %1 bytes").arg(m_buffer_size)); + emit error(); + m_buffer_size = 0; + m_buffer_at = 0; + break; + } } m_mutex.unlock(); len = mmsx_read (nullptr, m_handle, prebuf, to_read); |
