quote username and hostname in mssql_session (#2151)

Signed-off-by: Malovany, Dmytro (Ext) <dmytro.malovany@novartis.com>
This commit is contained in:
malovdm1 2017-09-18 21:49:20 +02:00 committed by Dominik Richter
parent 7ca1380ef9
commit 3e16a099c5
3 changed files with 13 additions and 5 deletions

View file

@ -51,11 +51,11 @@ module Inspec::Resources
escaped_query = q.gsub(/\\/, '\\\\').gsub(/"/, '\\"').gsub(/\$/, '\\$')
# surpress 'x rows affected' in SQLCMD with 'set nocount on;'
cmd_string = "sqlcmd -Q \"set nocount on; #{escaped_query}\" -W -w 1024 -s ','"
cmd_string += " -U #{@user} -P '#{@password}'" unless @user.nil? || @password.nil?
cmd_string += " -U '#{@user}' -P '#{@password}'" unless @user.nil? || @password.nil?
if @instance.nil?
cmd_string += " -S #{@host}"
cmd_string += " -S '#{@host}'"
else
cmd_string += " -S #{@host}\\#{@instance}"
cmd_string += " -S '#{@host}\\#{@instance}'"
end
cmd = inspec.command(cmd_string)
out = cmd.stdout + "\n" + cmd.stderr

View file

@ -372,8 +372,9 @@ class MockLoader
%q(psql --version | awk '{ print $NF }' | awk -F. '{ print $1"."$2 }') => cmd.call('psql-version'),
# mssql tests
"bash -c 'type \"sqlcmd\"'" => cmd.call('mssql-sqlcmd'),
"cf33896c4bb500abc23dda5b5eddb03cd35a9c46a7358a2c0a0abe41e08a73ae" => cmd.call('mssql-getdate'),
"cd283a171cbd65698a2ea6a15524cb4b8566ff1caff430a51091bd5065dcbdf7" => cmd.call('mssql-result'),
"4b550bb227058ac5851aa0bc946be794ee46489610f17842700136cf8bb5a0e9" => cmd.call('mssql-getdate'),
"aeb859a4ae4288df230916075c0de28781a2b215f41d64ed1ea9c3fd633140fa" => cmd.call('mssql-result'),
"5c2bc0f0568d11451d6cf83aff02ee3d47211265b52b6c5d45f8e57290b35082" => cmd.call('mssql-getdate'),
# oracle
"bash -c 'type \"sqlplus\"'" => cmd.call('oracle-cmd'),
"ef04e5199abee80e662cc0dd1dd3bf3e0aaae9b4498217d241db00b413820911" => cmd.call('oracle-result'),

View file

@ -12,6 +12,13 @@ describe 'Inspec::Resources::MssqlSession' do
_(resource.host).must_equal 'localhost'
end
it 'verify mssql_session configuration with custom sqlserver port and user in domain' do
resource = load_resource('mssql_session', user: 'DOMAIN\sa', password: 'yourStrong(!)Password', host: 'localhost,1533')
_(resource.user).must_equal 'DOMAIN\sa'
_(resource.password).must_equal 'yourStrong(!)Password'
_(resource.host).must_equal 'localhost,1533'
end
it 'run a SQL query' do
resource = load_resource('mssql_session', user: 'sa', password: 'yourStrong(!)Password', host: 'localhost')
query = resource.query("SELECT SERVERPROPERTY('ProductVersion') as result")