diff --git a/beeline/src/java/org/apache/hive/beeline/BeeLine.java b/beeline/src/java/org/apache/hive/beeline/BeeLine.java index 4e04997..b17e224 100644 --- a/beeline/src/java/org/apache/hive/beeline/BeeLine.java +++ b/beeline/src/java/org/apache/hive/beeline/BeeLine.java @@ -768,12 +768,9 @@ int initArgs(String[] args) { */ if (url != null) { - String com = "!connect " - + url + " " - + (user == null || user.length() == 0 ? "''" : user) + " " - + (pass == null || pass.length() == 0 ? "''" : pass) + " " - + (driver == null ? "" : driver); - debug("issuing: " + com); + String com = constructCmd(url, user, pass, driver, false); + String comForDebug = constructCmd(url, user, pass, driver, true); + debug("issuing: " + comForDebug); dispatch(com); } @@ -796,6 +793,18 @@ int initArgs(String[] args) { return code; } + private String constructCmd(String url, String user, String pass, String driver, boolean stripPasswd) { + String com = "!connect " + + url + " " + + (user == null || user.length() == 0 ? "''" : user) + " "; + if (stripPasswd) { + com += "[passwd striped]" + " "; + } else { + com += (pass == null || pass.length() == 0 ? "''" : pass) + " "; + } + com += (driver == null ? "" : driver); + return com; + } /** * Obtains a password from the passed file path. */ diff --git a/beeline/src/test/org/apache/hive/beeline/TestBeelineArgParsing.java b/beeline/src/test/org/apache/hive/beeline/TestBeelineArgParsing.java index e529057..417d3bc 100644 --- a/beeline/src/test/org/apache/hive/beeline/TestBeelineArgParsing.java +++ b/beeline/src/test/org/apache/hive/beeline/TestBeelineArgParsing.java @@ -23,9 +23,11 @@ import java.util.Arrays; import java.util.Collection; import java.util.List; - import java.io.File; import java.io.FileOutputStream; +import java.io.PrintStream; +import java.nio.file.Files; +import java.nio.file.Paths; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -244,4 +246,18 @@ public void testAddLocalJarWithoutAddDriverClazz() throws Exception { Assert.assertEquals(bl.findLocalDriver(connectionString).getClass().getName(), driverClazzName); } } + + @Test + public void testBeelinePasswordMask() throws Exception { + TestBeeline bl = new TestBeeline(); + File errFile = File.createTempFile("test", "tmp"); + bl.setErrorStream(new PrintStream(new FileOutputStream(errFile))); + String args[] = + new String[] { "-u", "url", "-n", "name", "-p", "password", "-d", "driver", + "--autoCommit=true", "--verbose", "--truncateTable" }; + bl.initArgs(args); + bl.close(); + String errContents = new String(Files.readAllBytes(Paths.get(errFile.toString()))); + Assert.assertTrue(errContents.contains("[passwd striped]")); + } }