mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2025-02-25 18:55:31 -06:00
popen() function strips the quotes from the arguments, so backup fails
for the schema name that needs quoting. Code is changed to add escapers. Fixes #4590
This commit is contained in:
committed by
Akshay Joshi
parent
f16498a8a7
commit
d056a94f0c
@@ -24,6 +24,7 @@ from pgadmin.utils.ajax import make_json_response, bad_request
|
||||
|
||||
from config import PG_DEFAULT_DRIVER
|
||||
from pgadmin.model import Server
|
||||
from pgadmin.misc.bgprocess import escape_dquotes_process_arg
|
||||
|
||||
# set template path for sql scripts
|
||||
MODULE_NAME = 'backup'
|
||||
@@ -419,17 +420,23 @@ def create_backup_objects_job(sid):
|
||||
|
||||
if 'schemas' in data:
|
||||
for s in data['schemas']:
|
||||
args.extend(['--schema', s])
|
||||
args.extend(['--schema', r'{0}'.format(
|
||||
driver.qtIdent(conn, s).replace('"', '\"'))])
|
||||
|
||||
if 'tables' in data:
|
||||
for s, t in data['tables']:
|
||||
args.extend([
|
||||
'--table', driver.qtIdent(conn, s, t)
|
||||
'--table', r'{0}'.format(
|
||||
driver.qtIdent(conn, s, t).replace('"', '\"'))
|
||||
])
|
||||
|
||||
escaped_args = [
|
||||
escape_dquotes_process_arg(arg) for arg in args
|
||||
]
|
||||
try:
|
||||
if backup_obj_type == 'objects':
|
||||
args.append(data['database'])
|
||||
escaped_args.append(data['database'])
|
||||
p = BatchProcess(
|
||||
desc=BackupMessage(
|
||||
BACKUP.OBJECT, sid,
|
||||
@@ -439,7 +446,7 @@ def create_backup_objects_job(sid):
|
||||
*args,
|
||||
database=data['database']
|
||||
),
|
||||
cmd=utility, args=args
|
||||
cmd=utility, args=escaped_args
|
||||
)
|
||||
else:
|
||||
p = BatchProcess(
|
||||
@@ -452,7 +459,7 @@ def create_backup_objects_job(sid):
|
||||
) else data['file'],
|
||||
*args
|
||||
),
|
||||
cmd=utility, args=args
|
||||
cmd=utility, args=escaped_args
|
||||
)
|
||||
|
||||
manager.export_password_env(p.id)
|
||||
|
||||
Reference in New Issue
Block a user