From 90a380a42e8d784419b2122ade79e2a07b32341a Mon Sep 17 00:00:00 2001 From: Catriona Malone Date: Fri, 25 Sep 2020 15:16:44 +0100 Subject: [PATCH] Add validation to winrm shell type option Signed-off-by: Catriona Malone --- lib/train-winrm/transport.rb | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/train-winrm/transport.rb b/lib/train-winrm/transport.rb index 71c2078..fb06c94 100644 --- a/lib/train-winrm/transport.rb +++ b/lib/train-winrm/transport.rb @@ -46,6 +46,7 @@ class Transport < Train.plugin(1) # rubocop:disable Metrics/ClassLength # ref: https://github.com/winrb/winrm#transports SUPPORTED_WINRM_TRANSPORTS = %i{negotiate ssl plaintext kerberos}.freeze + SUPPORTED_WINRM_SHELL_TYPES = %i{powershell elevated cmd}.freeze # common target configuration option :host, required: true @@ -106,6 +107,11 @@ def validate_options(opts) raise Train::ClientError, "Unsupported transport type: #{winrm_transport.inspect}" end + winrm_shell_type = opts[:winrm_shell_type].to_sym + unless SUPPORTED_WINRM_SHELL_TYPES.include?(winrm_shell_type) + raise Train::ClientError, "Unsupported winrm shell type: #{winrm_shell_type.inspect}" + end + # remove leading '/' path = (opts[:path] || "").sub(%r{^/+}, "")