aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/plugins/Effect/crossfade/crossfadeplugin.cpp20
-rw-r--r--src/plugins/Output/shout/shoutoutput.cpp11
-rw-r--r--src/plugins/Transports/http/httpstreamreader.cpp2
-rw-r--r--src/plugins/Transports/mms/mmsstreamreader.cpp15
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);