diff options
author | Shane Kearns <shane.kearns@accenture.com> | 2011-06-28 12:08:45 (GMT) |
---|---|---|
committer | Shane Kearns <shane.kearns@accenture.com> | 2011-06-28 13:13:26 (GMT) |
commit | 9ceac782c62e889852bfc1f72840d838ba98ebff (patch) | |
tree | 160cd6be80b59a2b9d26d62e92132f7813fbef23 /src/plugins/bearer/symbian/qnetworksession_impl.cpp | |
parent | 705b0f958a6071341b10cbd51917e1378356491b (diff) | |
download | Qt-9ceac782c62e889852bfc1f72840d838ba98ebff.zip Qt-9ceac782c62e889852bfc1f72840d838ba98ebff.tar.gz Qt-9ceac782c62e889852bfc1f72840d838ba98ebff.tar.bz2 |
Fix KERN-EXEC 0 errors in symbian bearer plugin
The plugin was ignoring errors when opening a handle, and as a result
crashed if the handle was invalid.
Error checking / handle validity checks added.
Task-number: QTBUG-18572
Reviewed-by: mread
Diffstat (limited to 'src/plugins/bearer/symbian/qnetworksession_impl.cpp')
-rw-r--r-- | src/plugins/bearer/symbian/qnetworksession_impl.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/plugins/bearer/symbian/qnetworksession_impl.cpp b/src/plugins/bearer/symbian/qnetworksession_impl.cpp index 791ebf2..5639c4f 100644 --- a/src/plugins/bearer/symbian/qnetworksession_impl.cpp +++ b/src/plugins/bearer/symbian/qnetworksession_impl.cpp @@ -476,6 +476,8 @@ TUint QNetworkSessionPrivateImpl::iapClientCount(TUint aIAPId) const { TRequestStatus status; TUint connectionCount; + if (!iConnectionMonitor.Handle()) + return 0; iConnectionMonitor.GetConnectionCount(connectionCount, status); User::WaitForRequest(status); if (status.Int() == KErrNone) { @@ -573,7 +575,8 @@ void QNetworkSessionPrivateImpl::stop() #endif if (!isOpen && publicConfig.isValid() && - publicConfig.type() == QNetworkConfiguration::InternetAccessPoint) { + publicConfig.type() == QNetworkConfiguration::InternetAccessPoint && + iConnectionMonitor.Handle()) { #ifdef QT_BEARERMGMT_SYMBIAN_DEBUG qDebug() << "QNS this : " << QString::number((uint)this) << " - " << "since session is not open, using RConnectionMonitor to stop() the interface"; @@ -855,6 +858,8 @@ quint64 QNetworkSessionPrivateImpl::transferredData(TUint dataType) const return 0; } + if (!iConnectionMonitor.Handle()) + return 0; TUint count; TRequestStatus status; iConnectionMonitor.GetConnectionCount(count, status); @@ -1497,6 +1502,8 @@ bool QNetworkSessionPrivateImpl::easyWlanTrueIapId(TUint32 &trueIapId) const // Loop through all connections that connection monitor is aware // and check for IAPs based on easy WLAN + if (!iConnectionMonitor.Handle()) + return false; TRequestStatus status; TUint connectionCount; iConnectionMonitor.GetConnectionCount(connectionCount, status); |