Skip to content

Commit fe95b52

Browse files
authoredJul 13, 2021
Merge pull request #44126 from nirvn/auth_bye_regexp
[qt6][authentication] Migrate away from QRegExp in favor of QRegularExpression
2 parents 666b229 + 0395ea0 commit fe95b52

File tree

8 files changed

+69
-45
lines changed

8 files changed

+69
-45
lines changed
 

‎src/auth/basic/core/qgsauthbasicmethod.cpp

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626

2727
#include <QNetworkProxy>
2828
#include <QMutexLocker>
29+
#include <QRegularExpression>
2930
#include <QUuid>
3031

3132
const QString QgsAuthBasicMethod::AUTH_METHOD_KEY = QStringLiteral( "Basic" );
@@ -112,7 +113,8 @@ bool QgsAuthBasicMethod::updateDataSourceUriItems( QStringList &connectionItems,
112113
}
113114

114115
QString sslMode = QStringLiteral( "prefer" );
115-
int sslModeIdx = connectionItems.indexOf( QRegExp( "^sslmode=.*" ) );
116+
const thread_local QRegularExpression sslModeRegExp( "^sslmode=.*" );
117+
int sslModeIdx = connectionItems.indexOf( sslModeRegExp );
116118
if ( sslModeIdx != -1 )
117119
{
118120
sslMode = connectionItems.at( sslModeIdx ).split( '=' ).at( 1 );
@@ -171,7 +173,7 @@ bool QgsAuthBasicMethod::updateDataSourceUriItems( QStringList &connectionItems,
171173
}
172174
else if ( uri.startsWith( QLatin1String( "SDE:" ) ) )
173175
{
174-
uri = uri.replace( QRegExp( ",$" ), QStringLiteral( ",%1,%2" ).arg( username, password ) );
176+
uri = uri.replace( QRegularExpression( ",$" ), QStringLiteral( ",%1,%2" ).arg( username, password ) );
175177
}
176178
else if ( uri.startsWith( QLatin1String( "IDB" ) ) )
177179
{
@@ -209,7 +211,7 @@ bool QgsAuthBasicMethod::updateDataSourceUriItems( QStringList &connectionItems,
209211
}
210212
else if ( uri.startsWith( QLatin1String( "ODBC:" ) ) )
211213
{
212-
uri = uri.replace( QRegExp( "^ODBC:@?" ), "ODBC:" + username + '/' + password + '@' );
214+
uri = uri.replace( QRegularExpression( "^ODBC:@?" ), "ODBC:" + username + '/' + password + '@' );
213215
}
214216
else if ( uri.startsWith( QLatin1String( "couchdb" ) )
215217
|| uri.startsWith( QLatin1String( "DODS" ) )
@@ -240,7 +242,8 @@ bool QgsAuthBasicMethod::updateDataSourceUriItems( QStringList &connectionItems,
240242
else // Not-ogr
241243
{
242244
QString userparam = "user='" + escapeUserPass( username ) + '\'';
243-
int userindx = connectionItems.indexOf( QRegExp( "^user='.*" ) );
245+
const thread_local QRegularExpression userRegExp( "^user='.*" );
246+
int userindx = connectionItems.indexOf( userRegExp );
244247
if ( userindx != -1 )
245248
{
246249
connectionItems.replace( userindx, userparam );
@@ -251,7 +254,8 @@ bool QgsAuthBasicMethod::updateDataSourceUriItems( QStringList &connectionItems,
251254
}
252255

253256
QString passparam = "password='" + escapeUserPass( password ) + '\'';
254-
int passindx = connectionItems.indexOf( QRegExp( "^password='.*" ) );
257+
const thread_local QRegularExpression passRegExp( "^password='.*" );
258+
int passindx = connectionItems.indexOf( passRegExp );
255259
if ( passindx != -1 )
256260
{
257261
connectionItems.replace( passindx, passparam );
@@ -263,7 +267,8 @@ bool QgsAuthBasicMethod::updateDataSourceUriItems( QStringList &connectionItems,
263267
// add extra CAs
264268
if ( ! caparam.isEmpty() )
265269
{
266-
int sslcaindx = connectionItems.indexOf( QRegExp( "^sslrootcert='.*" ) );
270+
const thread_local QRegularExpression sslcaRegExp( "^sslrootcert='.*" );
271+
int sslcaindx = connectionItems.indexOf( sslcaRegExp );
267272
if ( sslcaindx != -1 )
268273
{
269274
connectionItems.replace( sslcaindx, caparam );

‎src/auth/identcert/core/qgsauthidentcertmethod.cpp

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626

2727
#include <QDir>
2828
#include <QFile>
29+
#include <QRegularExpression>
2930
#include <QUuid>
3031
#ifndef QT_NO_SSL
3132
#include <QtCrypto>
@@ -161,7 +162,8 @@ bool QgsAuthIdentCertMethod::updateDataSourceUriItems( QStringList &connectionIt
161162

162163
// add uri parameters
163164
QString userparam = "user='" + commonName + "'";
164-
int userindx = connectionItems.indexOf( QRegExp( "^user='.*" ) );
165+
const thread_local QRegularExpression userRegExp( "^user='.*" );
166+
int userindx = connectionItems.indexOf( userRegExp );
165167
if ( userindx != -1 )
166168
{
167169
connectionItems.replace( userindx, userparam );
@@ -172,7 +174,8 @@ bool QgsAuthIdentCertMethod::updateDataSourceUriItems( QStringList &connectionIt
172174
}
173175

174176
QString certparam = "sslcert='" + certFilePath + "'";
175-
int sslcertindx = connectionItems.indexOf( QRegExp( "^sslcert='.*" ) );
177+
const thread_local QRegularExpression sslcertRegExp( "^sslcert='.*" );
178+
int sslcertindx = connectionItems.indexOf( sslcertRegExp );
176179
if ( sslcertindx != -1 )
177180
{
178181
connectionItems.replace( sslcertindx, certparam );
@@ -183,7 +186,8 @@ bool QgsAuthIdentCertMethod::updateDataSourceUriItems( QStringList &connectionIt
183186
}
184187

185188
QString keyparam = "sslkey='" + keyFilePath + "'";
186-
int sslkeyindx = connectionItems.indexOf( QRegExp( "^sslkey='.*" ) );
189+
const thread_local QRegularExpression sslkeyRegExp( "^sslkey='.*" );
190+
int sslkeyindx = connectionItems.indexOf( sslkeyRegExp );
187191
if ( sslkeyindx != -1 )
188192
{
189193
connectionItems.replace( sslkeyindx, keyparam );
@@ -194,7 +198,8 @@ bool QgsAuthIdentCertMethod::updateDataSourceUriItems( QStringList &connectionIt
194198
}
195199

196200
QString caparam = "sslrootcert='" + caFilePath + "'";
197-
int sslcaindx = connectionItems.indexOf( QRegExp( "^sslrootcert='.*" ) );
201+
const thread_local QRegularExpression sslcaRegExp( "^sslrootcert='.*" );
202+
int sslcaindx = connectionItems.indexOf( sslcaRegExp );
198203
if ( sslcaindx != -1 )
199204
{
200205
connectionItems.replace( sslcaindx, caparam );

‎src/auth/pkipaths/core/qgsauthpkipathsmethod.cpp

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626

2727
#include <QDir>
2828
#include <QFile>
29+
#include <QRegularExpression>
2930
#include <QUuid>
3031
#ifndef QT_NO_SSL
3132
#include <QtCrypto>
@@ -193,7 +194,8 @@ bool QgsAuthPkiPathsMethod::updateDataSourceUriItems( QStringList &connectionIte
193194

194195
// add uri parameters
195196
QString userparam = "user='" + commonName + "'";
196-
int userindx = connectionItems.indexOf( QRegExp( "^user='.*" ) );
197+
const thread_local QRegularExpression userRegExp( "^user='.*" );
198+
int userindx = connectionItems.indexOf( userRegExp );
197199
if ( userindx != -1 )
198200
{
199201
connectionItems.replace( userindx, userparam );
@@ -205,7 +207,8 @@ bool QgsAuthPkiPathsMethod::updateDataSourceUriItems( QStringList &connectionIte
205207

206208
// add uri parameters
207209
QString certparam = "sslcert='" + certFilePath + "'";
208-
int sslcertindx = connectionItems.indexOf( QRegExp( "^sslcert='.*" ) );
210+
const thread_local QRegularExpression sslcertRegExp( "^sslcert='.*" );
211+
int sslcertindx = connectionItems.indexOf( sslcertRegExp );
209212
if ( sslcertindx != -1 )
210213
{
211214
connectionItems.replace( sslcertindx, certparam );
@@ -216,7 +219,8 @@ bool QgsAuthPkiPathsMethod::updateDataSourceUriItems( QStringList &connectionIte
216219
}
217220

218221
QString keyparam = "sslkey='" + keyFilePath + "'";
219-
int sslkeyindx = connectionItems.indexOf( QRegExp( "^sslkey='.*" ) );
222+
const thread_local QRegularExpression sslkeyRegExp( "^sslkey='.*" );
223+
int sslkeyindx = connectionItems.indexOf( sslkeyRegExp );
220224
if ( sslkeyindx != -1 )
221225
{
222226
connectionItems.replace( sslkeyindx, keyparam );
@@ -227,7 +231,8 @@ bool QgsAuthPkiPathsMethod::updateDataSourceUriItems( QStringList &connectionIte
227231
}
228232

229233
QString caparam = "sslrootcert='" + caFilePath + "'";
230-
int sslcaindx = connectionItems.indexOf( QRegExp( "^sslrootcert='.*" ) );
234+
const thread_local QRegularExpression sslcaRegExp( "^sslrootcert='.*" );
235+
int sslcaindx = connectionItems.indexOf( sslcaRegExp );
231236
if ( sslcaindx != -1 )
232237
{
233238
connectionItems.replace( sslcaindx, caparam );

‎src/auth/pkipkcs12/core/qgsauthpkcs12method.cpp

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,17 @@
1616

1717
#include "qgsauthpkcs12method.h"
1818

19+
#include "qgsauthcertutils.h"
20+
#include "qgsauthmanager.h"
21+
#include "qgslogger.h"
22+
#include "qgsapplication.h"
23+
#ifdef HAVE_GUI
24+
#include "qgsauthpkcs12edit.h"
25+
#endif
26+
1927
#include <QDir>
2028
#include <QFile>
29+
#include <QRegularExpression>
2130
#include <QUuid>
2231
#ifndef QT_NO_SSL
2332
#include <QtCrypto>
@@ -26,14 +35,6 @@
2635
#endif
2736
#include <QMutexLocker>
2837

29-
#include "qgsauthcertutils.h"
30-
#include "qgsauthmanager.h"
31-
#include "qgslogger.h"
32-
#include "qgsapplication.h"
33-
#ifdef HAVE_GUI
34-
#include "qgsauthpkcs12edit.h"
35-
#endif
36-
3738
const QString QgsAuthPkcs12Method::AUTH_METHOD_KEY = QStringLiteral( "PKI-PKCS#12" );
3839
const QString QgsAuthPkcs12Method::AUTH_METHOD_DESCRIPTION = QStringLiteral( "PKI PKCS#12 authentication" );
3940
const QString QgsAuthPkcs12Method::AUTH_METHOD_DISPLAY_DESCRIPTION = tr( "PKI PKCS#12 authentication" );
@@ -192,7 +193,8 @@ bool QgsAuthPkcs12Method::updateDataSourceUriItems( QStringList &connectionItems
192193

193194
// add uri parameters
194195
QString userparam = "user='" + commonName + "'";
195-
int userindx = connectionItems.indexOf( QRegExp( "^user='.*" ) );
196+
const thread_local QRegularExpression userRegExp( "^user='.*" );
197+
int userindx = connectionItems.indexOf( userRegExp );
196198
if ( userindx != -1 )
197199
{
198200
connectionItems.replace( userindx, userparam );
@@ -203,7 +205,8 @@ bool QgsAuthPkcs12Method::updateDataSourceUriItems( QStringList &connectionItems
203205
}
204206

205207
QString certparam = "sslcert='" + certFilePath + "'";
206-
int sslcertindx = connectionItems.indexOf( QRegExp( "^sslcert='.*" ) );
208+
const thread_local QRegularExpression sslcertRegExp( "^sslcert='.*" );
209+
int sslcertindx = connectionItems.indexOf( sslcertRegExp );
207210
if ( sslcertindx != -1 )
208211
{
209212
connectionItems.replace( sslcertindx, certparam );
@@ -214,7 +217,8 @@ bool QgsAuthPkcs12Method::updateDataSourceUriItems( QStringList &connectionItems
214217
}
215218

216219
QString keyparam = "sslkey='" + keyFilePath + "'";
217-
int sslkeyindx = connectionItems.indexOf( QRegExp( "^sslkey='.*" ) );
220+
const thread_local QRegularExpression sslkeyRegExp( "^sslkey='.*" );
221+
int sslkeyindx = connectionItems.indexOf( sslkeyRegExp );
218222
if ( sslkeyindx != -1 )
219223
{
220224
connectionItems.replace( sslkeyindx, keyparam );
@@ -225,7 +229,8 @@ bool QgsAuthPkcs12Method::updateDataSourceUriItems( QStringList &connectionItems
225229
}
226230

227231
QString caparam = "sslrootcert='" + caFilePath + "'";
228-
int sslcaindx = connectionItems.indexOf( QRegExp( "^sslrootcert='.*" ) );
232+
const thread_local QRegularExpression sslcaRegExp( "^sslrootcert='.*" );
233+
int sslcaindx = connectionItems.indexOf( sslcaRegExp );
229234
if ( sslcaindx != -1 )
230235
{
231236
connectionItems.replace( sslcaindx, caparam );

‎src/core/auth/qgsauthmanager.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
#include <QSqlDriver>
3434
#include <QDomElement>
3535
#include <QDomDocument>
36+
#include <QRegularExpression>
3637

3738
#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)
3839
#include <QRandomGenerator>
@@ -917,8 +918,8 @@ bool QgsAuthManager::configIdUnique( const QString &id ) const
917918

918919
bool QgsAuthManager::hasConfigId( const QString &txt ) const
919920
{
920-
QRegExp rx( AUTH_CFG_REGEX );
921-
return rx.indexIn( txt ) != -1;
921+
const thread_local QRegularExpression authCfgRegExp( AUTH_CFG_REGEX );
922+
return txt.indexOf( authCfgRegExp ) != -1;
922923
}
923924

924925
QgsAuthMethodConfigsMap QgsAuthManager::availableAuthMethodConfigs( const QString &dataprovider )
@@ -2437,8 +2438,8 @@ bool QgsAuthManager::updateIgnoredSslErrorsCacheFromConfig( const QgsAuthConfigS
24372438
bool QgsAuthManager::updateIgnoredSslErrorsCache( const QString &shahostport, const QList<QSslError> &errors )
24382439
{
24392440
QMutexLocker locker( mMutex.get() );
2440-
QRegExp rx( "\\S+:\\S+:\\d+" );
2441-
if ( !rx.exactMatch( shahostport ) )
2441+
const thread_local QRegularExpression rx( QRegularExpression::anchoredPattern( "\\S+:\\S+:\\d+" ) );
2442+
if ( !rx.match( shahostport ).hasMatch() )
24422443
{
24432444
QgsDebugMsg( "Passed shahostport does not match \\S+:\\S+:\\d+, "
24442445
"e.g. 74a4ef5ea94512a43769b744cda0ca5049a72491:www.example.com:443" );

‎src/core/auth/qgsauthmethodregistry.cpp

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,6 @@
1616

1717
#include "qgsauthmethodregistry.h"
1818

19-
#include <QString>
20-
#include <QDir>
21-
#include <QLibrary>
22-
2319
#include "qgis.h"
2420
#include "qgsauthconfig.h"
2521
#include "qgsauthmethod.h"
@@ -39,6 +35,11 @@
3935
#include "qgsauthpkcs12method.h"
4036
#endif
4137

38+
#include <QString>
39+
#include <QDir>
40+
#include <QLibrary>
41+
#include <QRegularExpression>
42+
4243

4344
static QgsAuthMethodRegistry *sInstance = nullptr;
4445

@@ -133,7 +134,7 @@ void QgsAuthMethodRegistry::init()
133134

134135
// auth method file regex pattern, only files matching the pattern are loaded if the variable is defined
135136
QString filePattern = getenv( "QGIS_AUTHMETHOD_FILE" );
136-
QRegExp fileRegexp;
137+
QRegularExpression fileRegexp;
137138
if ( !filePattern.isEmpty() )
138139
{
139140
fileRegexp.setPattern( filePattern );
@@ -144,9 +145,9 @@ void QgsAuthMethodRegistry::init()
144145
{
145146
QFileInfo fi( it.next() );
146147

147-
if ( !fileRegexp.isEmpty() )
148+
if ( !filePattern.isEmpty() )
148149
{
149-
if ( fileRegexp.indexIn( fi.fileName() ) == -1 )
150+
if ( fi.fileName().indexOf( fileRegexp ) == -1 )
150151
{
151152
QgsDebugMsg( "auth method " + fi.fileName() + " skipped because doesn't match pattern " + filePattern );
152153
continue;

‎src/gui/auth/qgsauthconfigidedit.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
#include "qgsauthmanager.h"
2222
#include "qgsapplication.h"
2323

24+
#include <QRegularExpression>
25+
2426

2527
QgsAuthConfigIdEdit::QgsAuthConfigIdEdit( QWidget *parent, const QString &authcfg, bool allowEmpty )
2628
: QWidget( parent )
@@ -117,6 +119,6 @@ void QgsAuthConfigIdEdit::leAuthCfg_textChanged( const QString &txt )
117119

118120
bool QgsAuthConfigIdEdit::isAlphaNumeric( const QString &authcfg )
119121
{
120-
QRegExp rx( "([a-z]|[A-Z]|[0-9]){7}" );
121-
return rx.indexIn( authcfg ) != -1;
122+
const thread_local QRegularExpression alphaNumericRegExp( "([a-z]|[A-Z]|[0-9]){7}" );
123+
return authcfg.indexOf( alphaNumericRegExp ) != -1;
122124
}

‎src/gui/auth/qgsauthconfigselect.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,6 @@
1717
#include "qgsauthconfigselect.h"
1818
#include "ui_qgsauthconfigselect.h"
1919

20-
#include <QHash>
21-
#include <QMessageBox>
22-
#include <QTimer>
23-
2420
#include "qgsauthconfig.h"
2521
#include "qgsauthguiutils.h"
2622
#include "qgsauthmanager.h"
@@ -29,6 +25,11 @@
2925
#include "qgsapplication.h"
3026
#include "qgsauthmethodmetadata.h"
3127

28+
#include <QHash>
29+
#include <QMessageBox>
30+
#include <QTimer>
31+
#include <QRegularExpression>
32+
3233

3334
QgsAuthConfigSelect::QgsAuthConfigSelect( QWidget *parent, const QString &dataprovider )
3435
: QWidget( parent )
@@ -382,8 +383,7 @@ void QgsAuthConfigUriEdit::authCfgRemoved( const QString &authcfg )
382383

383384
int QgsAuthConfigUriEdit::authCfgIndex()
384385
{
385-
QRegExp rx( QgsApplication::authManager()->configIdRegex() );
386-
return rx.indexIn( mDataUri );
386+
return mDataUri.indexOf( QRegularExpression( QgsApplication::authManager()->configIdRegex() ) );
387387
}
388388

389389
QString QgsAuthConfigUriEdit::authCfgFromUri()

0 commit comments

Comments
 (0)
Please sign in to comment.