Skip to content

Commit

Permalink
Escape special characters in HANA password
Browse files Browse the repository at this point in the history
  • Loading branch information
Maksim Rylov authored and mrylov committed Dec 7, 2020
1 parent 7328775 commit e1b6125
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 4 deletions.
9 changes: 6 additions & 3 deletions src/providers/hana/qgshanaconnectionstringbuilder.cpp
Expand Up @@ -37,10 +37,13 @@ QgsHanaConnectionStringBuilder::QgsHanaConnectionStringBuilder( const QgsDataSou
mSslTrustStore = uri.param( QStringLiteral( "sslTrustStore" ) );
}

QString QgsHanaConnectionStringBuilder::toString()
QString QgsHanaConnectionStringBuilder::toString() const
{
QString ret = QStringLiteral( "DRIVER={%1};SERVERNODE=%2:%3;DATABASENAME=%4;UID=%5;PWD=%6;CHAR_AS_UTF8=1" ).arg(
mDriver, mHost, mPort, mDatabase, mUserName, mPassword );
// For more details on how to escape special characters in passwords,
// see https://stackoverflow.com/questions/55150362/maybe-illegal-character-in-odbc-sql-server-connection-string-pwd
QString pwd = QString( mPassword ).replace( "}", "}}" );
QString ret = QStringLiteral( "DRIVER={%1};SERVERNODE=%2:%3;DATABASENAME=%4;UID=%5;PWD={%6};CHAR_AS_UTF8=1" ).arg(
mDriver, mHost, mPort, mDatabase, mUserName, pwd );
if ( !mSchema.isEmpty() )
ret += QStringLiteral( ";CURRENTSCHEMA=" ) + mSchema;
if ( mSslEnabled )
Expand Down
2 changes: 1 addition & 1 deletion src/providers/hana/qgshanaconnectionstringbuilder.h
Expand Up @@ -64,7 +64,7 @@ class QgsHanaConnectionStringBuilder
const QString &getSslHostNameInCertificate() const { return mSslHostNameInCertificate; }
void setSslHostNameInCertificate( const QString &value ) { mSslHostNameInCertificate = value; }

QString toString();
QString toString() const;

private:
QString mDriver;
Expand Down

0 comments on commit e1b6125

Please sign in to comment.