Skip to content

Commit 65672b7

Browse files
authored
setup: pass password in quotes for cloudstack-setup-databases (#5025)
Fixes issue of passing password and management secret key with special characters. Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
1 parent 06454ff commit 65672b7

1 file changed

Lines changed: 3 additions & 4 deletions

File tree

setup/bindir/cloud-setup-databases.in

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ import string
2626
from optparse import OptionParser
2727
import subprocess
2828
import shutil
29-
import shlex
3029
import socket
3130

3231
# squelch mysqldb spurious warnings
@@ -147,7 +146,7 @@ class DBDeployer(object):
147146
try:
148147
mysqlCmds = [mysqlPath, '--user=%s'%kwargs['user'], '--host=%s'%kwargs['host'], '--port=%s'%kwargs['port']]
149148
if 'passwd' in kwargs:
150-
mysqlCmds.append('--password=%s'%kwargs['passwd'])
149+
mysqlCmds.append('--password=\'%s\''%kwargs['passwd'])
151150
open(self.tmpMysqlFile, 'w').write(text)
152151
mysqlCmds.append('<')
153152
mysqlCmds.append(self.tmpMysqlFile)
@@ -389,7 +388,7 @@ for example:
389388

390389
def processEncryptionStuff(self):
391390
def encrypt(input):
392-
cmd = ['java','-Djava.security.egd=file:/dev/urandom','-classpath','"' + self.encryptionJarPath + '"','org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI', 'encrypt.sh', 'input=%s'%input, 'password=%s'%self.mgmtsecretkey,'verbose=false']
391+
cmd = ['java','-Djava.security.egd=file:/dev/urandom','-classpath','"' + self.encryptionJarPath + '"','org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI', 'encrypt.sh', 'input=\'%s\''%input, 'password=\'%s\''%self.mgmtsecretkey,'verbose=false']
393392
return str(runCmd(cmd)).strip('\r\n')
394393

395394
def saveMgmtServerSecretKey():
@@ -400,7 +399,7 @@ for example:
400399
return 'ENC(%s)'%value
401400

402401
def encryptDBSecretKey():
403-
self.putDbProperty('db.cloud.encrypt.secret', formatEncryptResult(encrypt(shlex.quote(self.dbsecretkey))))
402+
self.putDbProperty('db.cloud.encrypt.secret', formatEncryptResult(encrypt(self.dbsecretkey)))
404403

405404
def encryptDBPassword():
406405
dbPassword = self.getDbProperty('db.cloud.password')

0 commit comments

Comments
 (0)