From d76b04a97586a1b89f3376d66a15bb413f168ddb Mon Sep 17 00:00:00 2001 From: Alessandro Pasotti Date: Fri, 6 Oct 2017 18:10:38 +0200 Subject: [PATCH] [auth] Added mutex to protect cache for basic auth --- src/auth/basic/qgsauthbasicmethod.cpp | 5 +++++ src/auth/basic/qgsauthbasicmethod.h | 3 +++ 2 files changed, 8 insertions(+) diff --git a/src/auth/basic/qgsauthbasicmethod.cpp b/src/auth/basic/qgsauthbasicmethod.cpp index 8ef33cbae87..071f0f5c9b1 100644 --- a/src/auth/basic/qgsauthbasicmethod.cpp +++ b/src/auth/basic/qgsauthbasicmethod.cpp @@ -21,6 +21,7 @@ #include "qgslogger.h" #include +#include static const QString AUTH_METHOD_KEY = QStringLiteral( "Basic" ); static const QString AUTH_METHOD_DESCRIPTION = QStringLiteral( "Basic authentication" ); @@ -169,6 +170,7 @@ void QgsAuthBasicMethod::clearCachedConfig( const QString &authcfg ) QgsAuthMethodConfig QgsAuthBasicMethod::getMethodConfig( const QString &authcfg, bool fullconfig ) { + QMutexLocker locker( &mConfigMutex ); QgsAuthMethodConfig mconfig; // check if it is cached @@ -187,6 +189,7 @@ QgsAuthMethodConfig QgsAuthBasicMethod::getMethodConfig( const QString &authcfg, } // cache bundle + locker.unlock(); putMethodConfig( authcfg, mconfig ); return mconfig; @@ -194,12 +197,14 @@ QgsAuthMethodConfig QgsAuthBasicMethod::getMethodConfig( const QString &authcfg, void QgsAuthBasicMethod::putMethodConfig( const QString &authcfg, const QgsAuthMethodConfig &mconfig ) { + QMutexLocker locker( &mConfigMutex ); QgsDebugMsg( QString( "Putting basic config for authcfg: %1" ).arg( authcfg ) ); sAuthConfigCache.insert( authcfg, mconfig ); } void QgsAuthBasicMethod::removeMethodConfig( const QString &authcfg ) { + QMutexLocker locker( &mConfigMutex ); if ( sAuthConfigCache.contains( authcfg ) ) { sAuthConfigCache.remove( authcfg ); diff --git a/src/auth/basic/qgsauthbasicmethod.h b/src/auth/basic/qgsauthbasicmethod.h index d3997d2e5fd..4ff2c87ec55 100644 --- a/src/auth/basic/qgsauthbasicmethod.h +++ b/src/auth/basic/qgsauthbasicmethod.h @@ -18,6 +18,7 @@ #define QGSAUTHBASICMETHOD_H #include +#include #include "qgsauthconfig.h" #include "qgsauthmethod.h" @@ -61,6 +62,8 @@ class QgsAuthBasicMethod : public QgsAuthMethod QString escapeUserPass( const QString &val, QChar delim = '\'' ) const; static QMap sAuthConfigCache; + + QMutex mConfigMutex; }; #endif // QGSAUTHBASICMETHOD_H