Fixed #30307 -- Fixed incorrect quoting of database user password when using dbshell on Oracle.

Regression in acfc650f2a.
This commit is contained in:
msg 2019-04-01 19:34:11 -04:00 committed by Mariusz Felisiak
parent 1ffddfc233
commit 755673e1bc
No known key found for this signature in database
GPG Key ID: 2EF56372BA48CD1B
3 changed files with 5 additions and 3 deletions

View File

@ -213,7 +213,7 @@ class DatabaseWrapper(BaseDatabaseWrapper):
return settings_dict['NAME'] return settings_dict['NAME']
def _connect_string(self): def _connect_string(self):
return '%s/\\"%s\\"@%s' % (self.settings_dict['USER'], self.settings_dict['PASSWORD'], self._dsn()) return '%s/"%s"@%s' % (self.settings_dict['USER'], self.settings_dict['PASSWORD'], self._dsn())
def get_connection_params(self): def get_connection_params(self):
conn_params = self.settings_dict['OPTIONS'].copy() conn_params = self.settings_dict['OPTIONS'].copy()

View File

@ -9,4 +9,6 @@ Django 2.2.1 fixes several bugs in 2.2.
Bugfixes Bugfixes
======== ========
* ... * Fixed a regression in Django 2.1 that caused the incorrect quoting of
database user password when using :djadmin:`dbshell` on Oracle
(:ticket:`30307`).

View File

@ -87,7 +87,7 @@ class TransactionalTests(TransactionTestCase):
old_password = connection.settings_dict['PASSWORD'] old_password = connection.settings_dict['PASSWORD']
connection.settings_dict['PASSWORD'] = 'p@ssword' connection.settings_dict['PASSWORD'] = 'p@ssword'
try: try:
self.assertIn('/\\"p@ssword\\"@', connection._connect_string()) self.assertIn('/"p@ssword"@', connection._connect_string())
with self.assertRaises(DatabaseError) as context: with self.assertRaises(DatabaseError) as context:
connection.cursor() connection.cursor()
# Database exception: "ORA-01017: invalid username/password" is # Database exception: "ORA-01017: invalid username/password" is