From d50ca3cc7adaa77fb53ad98eec71a5e6cc00b275 Mon Sep 17 00:00:00 2001 From: ikikko Date: Wed, 27 Jul 2011 02:06:20 +0900 Subject: [PATCH] take over the 'SystemRoot' variable on Windows --- .../plugins/script_realm/ScriptSecurityRealm.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/hudson/plugins/script_realm/ScriptSecurityRealm.java b/src/main/java/hudson/plugins/script_realm/ScriptSecurityRealm.java index 5ac6ca4..bf03d1a 100644 --- a/src/main/java/hudson/plugins/script_realm/ScriptSecurityRealm.java +++ b/src/main/java/hudson/plugins/script_realm/ScriptSecurityRealm.java @@ -36,7 +36,9 @@ import java.io.IOException; import java.io.OutputStream; import java.io.StringWriter; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.StringTokenizer; import java.util.logging.Level; import java.util.logging.Logger; @@ -80,7 +82,13 @@ public class ScriptSecurityRealm extends AbstractPasswordBasedSecurityRealm { try { StringWriter out = new StringWriter(); LocalLauncher launcher = new LoginScriptLauncher(new StreamTaskListener(out)); - if (launcher.launch().cmds(QuotedStringTokenizer.tokenize(commandLine)).stdout(new NullOutputStream()).envs("U=" + username, "P=" + password) + Map overrides = new HashMap(); + overrides.put("U", username); + overrides.put("P", password); + if (System.getProperty("os.name").toLowerCase().contains("win")) { + overrides.put("SystemRoot", System.getenv("SystemRoot")); + } + if (launcher.launch().cmds(QuotedStringTokenizer.tokenize(commandLine)).stdout(new NullOutputStream()).envs(overrides) .join() != 0) { throw new BadCredentialsException(out.toString()); }