This is an automated email from the ASF dual-hosted git repository. vinayakumarb pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/hadoop.git
The following commit(s) were added to refs/heads/trunk by this push: new 62cc673d00ed [HADOOP-19010] - NullPointerException in Hadoop Credential Check CLI (#6351) 62cc673d00ed is described below commit 62cc673d00ed64437fc787f85c8091f8357461da Author: Anika Kelhanka <anikakelha...@gmail.com> AuthorDate: Sat Dec 16 12:23:52 2023 +0530 [HADOOP-19010] - NullPointerException in Hadoop Credential Check CLI (#6351) --- .../apache/hadoop/security/alias/CredentialShell.java | 16 +++++++++++----- .../org/apache/hadoop/security/alias/TestCredShell.java | 15 +++++++++++++++ 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/alias/CredentialShell.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/alias/CredentialShell.java index 66df17a181e5..45b5af36bbbf 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/alias/CredentialShell.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/alias/CredentialShell.java @@ -25,6 +25,7 @@ import java.security.NoSuchAlgorithmException; import java.util.Arrays; import java.util.List; +import org.apache.hadoop.security.alias.CredentialProvider.CredentialEntry; import org.apache.hadoop.classification.VisibleForTesting; import org.apache.commons.lang3.StringUtils; @@ -365,12 +366,17 @@ public class CredentialShell extends CommandShell { } else { password = c.readPassword("Enter alias password: "); } - char[] storePassword = - provider.getCredentialEntry(alias).getCredential(); - String beMatch = - Arrays.equals(storePassword, password) ? "success" : "failed"; + CredentialEntry credentialEntry = provider.getCredentialEntry(alias); + if(credentialEntry == null) { + // Fail the password match when alias not found + getOut().println("Password match failed for " + alias + "."); + } else { + char[] storePassword = credentialEntry.getCredential(); + String beMatch = + Arrays.equals(storePassword, password) ? "success" : "failed"; - getOut().println("Password match " + beMatch + " for " + alias + "."); + getOut().println("Password match " + beMatch + " for " + alias + "."); + } } catch (IOException e) { getOut().println("Cannot check aliases for CredentialProvider: " + provider.toString() diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/alias/TestCredShell.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/alias/TestCredShell.java index bf72b52b3206..706158930293 100644 --- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/alias/TestCredShell.java +++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/alias/TestCredShell.java @@ -165,6 +165,21 @@ public class TestCredShell { assertTrue(outContent.toString().contains("Passwords don't match")); } + @Test + public void testPromptForCredentialNotFound() throws Exception { + String[] args1 = {"check", "credential1", "-provider", + jceksProvider}; + ArrayList<String> password = new ArrayList<String>(); + password.add("p@ssw0rd"); + int rc = 0; + CredentialShell shell = new CredentialShell(); + shell.setConf(new Configuration()); + shell.setPasswordReader(new MockPasswordReader(password)); + rc = shell.run(args1); + assertEquals(0, rc); + assertOutputContains("Password match failed for credential1."); + } + @Test public void testPromptForCredential() throws Exception { String[] args1 = {"create", "credential1", "-provider", --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org