From 4fbe9116ecc9defaad3551e8c19c622a49fc9925 Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Sun, 21 Oct 2012 08:09:36 +0000 Subject: fixed possible null-pointer dereference in transport plugins git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2958 90c681e8-e032-0410-971d-27865f9a5e38 --- src/plugins/Transports/http/httpstreamreader.cpp | 10 +++++----- src/plugins/Transports/http/httpstreamreader.h | 4 +++- src/plugins/Transports/mms/mmsstreamreader.cpp | 7 ++++--- src/plugins/Transports/mms/mmsstreamreader.h | 4 +++- 4 files changed, 15 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/plugins/Transports/http/httpstreamreader.cpp b/src/plugins/Transports/http/httpstreamreader.cpp index c0e02ddb0..ba4bce35b 100644 --- a/src/plugins/Transports/http/httpstreamreader.cpp +++ b/src/plugins/Transports/http/httpstreamreader.cpp @@ -28,6 +28,7 @@ #include #include #include +#include "httpinputsource.h" #include "httpstreamreader.h" //curl callbacks @@ -104,10 +105,9 @@ int curl_progress(void *pointer, double dltotal, double dlnow, double ultotal, d return 0; } - -HttpStreamReader::HttpStreamReader(const QString &url, QObject *parent) - : QIODevice(parent) +HttpStreamReader::HttpStreamReader(const QString &url, HTTPInputSource *parent) : QIODevice(parent) { + m_parent = parent; m_url = url; curl_global_init(CURL_GLOBAL_ALL); m_stream.buf_fill = 0; @@ -373,8 +373,8 @@ void HttpStreamReader::checkBuffer() metaData.insert(Qmmp::GENRE, m_stream.header.value("icy-genre")); } metaData.insert(Qmmp::URL, m_url); - (qobject_cast(parent()))->addMetaData(metaData); - (qobject_cast(parent()))->addStreamInfo(m_stream.header); + m_parent->addMetaData(metaData); + m_parent->addStreamInfo(m_stream.header); } emit ready(); } diff --git a/src/plugins/Transports/http/httpstreamreader.h b/src/plugins/Transports/http/httpstreamreader.h index 7bf05f926..1159dfe1f 100644 --- a/src/plugins/Transports/http/httpstreamreader.h +++ b/src/plugins/Transports/http/httpstreamreader.h @@ -35,6 +35,7 @@ class QTextCodec; class QFileInfo; class DownloadThread; +class HTTPInputSource; /*! @internal * @author Ilya Kotov @@ -57,7 +58,7 @@ class HttpStreamReader : public QIODevice { Q_OBJECT public: - HttpStreamReader(const QString &url, QObject *parent = 0); + HttpStreamReader(const QString &url, HTTPInputSource *parent); virtual ~HttpStreamReader(); @@ -105,6 +106,7 @@ private: long m_buffer_size; QTextCodec *m_codec; DownloadThread *m_thread; + HTTPInputSource *m_parent; #ifdef WITH_ENCA EncaAnalyser m_analyser; #endif diff --git a/src/plugins/Transports/mms/mmsstreamreader.cpp b/src/plugins/Transports/mms/mmsstreamreader.cpp index 008fbe5a5..3b3d90589 100644 --- a/src/plugins/Transports/mms/mmsstreamreader.cpp +++ b/src/plugins/Transports/mms/mmsstreamreader.cpp @@ -24,11 +24,12 @@ #include #include #include +#include "mmsinputsource.h" #include "mmsstreamreader.h" -MMSStreamReader::MMSStreamReader(const QString &url, QObject *parent) - : QIODevice(parent) +MMSStreamReader::MMSStreamReader(const QString &url, MMSInputSource *parent) : QIODevice(parent) { + m_parent = parent; m_url = url; m_handle = 0; m_aborted = false; @@ -197,7 +198,7 @@ void MMSStreamReader::checkBuffer() qDebug("MMSStreamReader: ready"); QMap metaData; metaData.insert(Qmmp::URL, m_url); - (qobject_cast(parent()))->addMetaData(metaData); + m_parent->addMetaData(metaData); emit ready(); } else if (!m_ready) diff --git a/src/plugins/Transports/mms/mmsstreamreader.h b/src/plugins/Transports/mms/mmsstreamreader.h index a3bb15e7a..6a95d65f9 100644 --- a/src/plugins/Transports/mms/mmsstreamreader.h +++ b/src/plugins/Transports/mms/mmsstreamreader.h @@ -31,6 +31,7 @@ class QFileInfo; class DownloadThread; +class MMSInputSource; /*! @internal * @author Ilya Kotov @@ -39,7 +40,7 @@ class MMSStreamReader : public QIODevice { Q_OBJECT public: - MMSStreamReader(const QString &url, QObject *parent = 0); + MMSStreamReader(const QString &url, MMSInputSource *parent); ~MMSStreamReader(); @@ -81,6 +82,7 @@ private: qint64 m_buffer_at; bool m_ready; DownloadThread *m_thread; + MMSInputSource *m_parent; }; class DownloadThread : public QThread -- cgit v1.2.3-13-gbd6f