HADOOP-11545. ArrayIndexOutOfBoundsException is thrown with "hadoop credential list -provider". Contributed by Brahma Reddy Battula.
(cherry picked from commit 1714609919
)
This commit is contained in:
parent
f10335b08d
commit
5a1531fff6
|
@ -556,6 +556,9 @@ Release 2.7.0 - UNRELEASED
|
||||||
HADOOP-11599. Client#getTimeout should use IPC_CLIENT_PING_DEFAULT when
|
HADOOP-11599. Client#getTimeout should use IPC_CLIENT_PING_DEFAULT when
|
||||||
IPC_CLIENT_PING_KEY is not configured. (zhihai xu via ozawa)
|
IPC_CLIENT_PING_KEY is not configured. (zhihai xu via ozawa)
|
||||||
|
|
||||||
|
HADOOP-11545. ArrayIndexOutOfBoundsException is thrown with "hadoop
|
||||||
|
credential list -provider". (Brahma Reddy Battula via aajisaka)
|
||||||
|
|
||||||
Release 2.6.1 - UNRELEASED
|
Release 2.6.1 - UNRELEASED
|
||||||
|
|
||||||
INCOMPATIBLE CHANGES
|
INCOMPATIBLE CHANGES
|
||||||
|
|
|
@ -97,6 +97,10 @@ public class CredentialShell extends Configured implements Tool {
|
||||||
|
|
||||||
for (int i = 0; i < args.length; i++) { // parse command line
|
for (int i = 0; i < args.length; i++) { // parse command line
|
||||||
if (args[i].equals("create")) {
|
if (args[i].equals("create")) {
|
||||||
|
if (i == args.length - 1) {
|
||||||
|
printCredShellUsage();
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
String alias = args[++i];
|
String alias = args[++i];
|
||||||
command = new CreateCommand(alias);
|
command = new CreateCommand(alias);
|
||||||
if (alias.equals("-help")) {
|
if (alias.equals("-help")) {
|
||||||
|
@ -104,6 +108,10 @@ public class CredentialShell extends Configured implements Tool {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
} else if (args[i].equals("delete")) {
|
} else if (args[i].equals("delete")) {
|
||||||
|
if (i == args.length - 1) {
|
||||||
|
printCredShellUsage();
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
String alias = args[++i];
|
String alias = args[++i];
|
||||||
command = new DeleteCommand(alias);
|
command = new DeleteCommand(alias);
|
||||||
if (alias.equals("-help")) {
|
if (alias.equals("-help")) {
|
||||||
|
@ -113,6 +121,10 @@ public class CredentialShell extends Configured implements Tool {
|
||||||
} else if (args[i].equals("list")) {
|
} else if (args[i].equals("list")) {
|
||||||
command = new ListCommand();
|
command = new ListCommand();
|
||||||
} else if (args[i].equals("-provider")) {
|
} else if (args[i].equals("-provider")) {
|
||||||
|
if (i == args.length - 1) {
|
||||||
|
printCredShellUsage();
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
userSuppliedProvider = true;
|
userSuppliedProvider = true;
|
||||||
getConf().set(CredentialProviderFactory.CREDENTIAL_PROVIDER_PATH,
|
getConf().set(CredentialProviderFactory.CREDENTIAL_PROVIDER_PATH,
|
||||||
args[++i]);
|
args[++i]);
|
||||||
|
@ -195,7 +207,7 @@ public class CredentialShell extends Configured implements Tool {
|
||||||
}
|
}
|
||||||
|
|
||||||
private class ListCommand extends Command {
|
private class ListCommand extends Command {
|
||||||
public static final String USAGE = "list [-provider] [-help]";
|
public static final String USAGE = "list [-provider provider-path]";
|
||||||
public static final String DESC =
|
public static final String DESC =
|
||||||
"The list subcommand displays the aliases contained within \n" +
|
"The list subcommand displays the aliases contained within \n" +
|
||||||
"a particular provider - as configured in core-site.xml or " +
|
"a particular provider - as configured in core-site.xml or " +
|
||||||
|
@ -237,7 +249,7 @@ public class CredentialShell extends Configured implements Tool {
|
||||||
|
|
||||||
private class DeleteCommand extends Command {
|
private class DeleteCommand extends Command {
|
||||||
public static final String USAGE =
|
public static final String USAGE =
|
||||||
"delete <alias> [-provider] [-f] [-help]";
|
"delete <alias> [-f] [-provider provider-path]";
|
||||||
public static final String DESC =
|
public static final String DESC =
|
||||||
"The delete subcommand deletes the credential\n" +
|
"The delete subcommand deletes the credential\n" +
|
||||||
"specified as the <alias> argument from within the provider\n" +
|
"specified as the <alias> argument from within the provider\n" +
|
||||||
|
@ -308,7 +320,8 @@ public class CredentialShell extends Configured implements Tool {
|
||||||
}
|
}
|
||||||
|
|
||||||
private class CreateCommand extends Command {
|
private class CreateCommand extends Command {
|
||||||
public static final String USAGE = "create <alias> [-provider] [-help]";
|
public static final String USAGE =
|
||||||
|
"create <alias> [-provider provider-path]";
|
||||||
public static final String DESC =
|
public static final String DESC =
|
||||||
"The create subcommand creates a new credential for the name specified\n" +
|
"The create subcommand creates a new credential for the name specified\n" +
|
||||||
"as the <alias> argument within the provider indicated through\n" +
|
"as the <alias> argument within the provider indicated through\n" +
|
||||||
|
|
|
@ -212,4 +212,19 @@ public class TestCredShell {
|
||||||
0, shell.init(new String[] {cmd, "-help"}));
|
0, shell.init(new String[] {cmd, "-help"}));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testEmptyArgForCommands() throws Exception {
|
||||||
|
CredentialShell shell = new CredentialShell();
|
||||||
|
String[] command = { "list", "-provider" };
|
||||||
|
assertEquals("Expected empty argument on " + command + " to return 1", 1,
|
||||||
|
shell.init(command));
|
||||||
|
|
||||||
|
for (String cmd : Arrays.asList("create", "delete")) {
|
||||||
|
shell.setConf(new Configuration());
|
||||||
|
assertEquals("Expected empty argument on " + cmd + " to return 1", 1,
|
||||||
|
shell.init(new String[] { cmd }));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue