OpenJDK / amber / amber
changeset 60860:ed79f6aea385
8240848: ArrayIndexOutOfBoundsException buf for TextCallbackHandler
Reviewed-by: mullan
author | weijun |
---|---|
date | Fri, 10 Apr 2020 15:05:42 +0800 |
parents | 4b76f0cc11c4 |
children | 4a39a7ad717f |
files | src/java.base/share/classes/sun/security/util/ConsoleCallbackHandler.java test/jdk/com/sun/security/auth/callback/TextCallbackHandler/Confirm.java |
diffstat | 2 files changed, 25 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/src/java.base/share/classes/sun/security/util/ConsoleCallbackHandler.java Fri Apr 10 05:43:40 2020 +0000 +++ b/src/java.base/share/classes/sun/security/util/ConsoleCallbackHandler.java Fri Apr 10 15:05:42 2020 +0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -35,7 +35,6 @@ import java.io.BufferedReader; import java.io.IOException; -import java.io.InputStream; import java.io.InputStreamReader; /** @@ -236,8 +235,9 @@ result = Integer.parseInt(readLine()); if (result < 0 || result > (options.length - 1)) { result = defaultOption; + } else { + result = options[result].value; } - result = options[result].value; } catch (NumberFormatException e) { result = defaultOption; }
--- a/test/jdk/com/sun/security/auth/callback/TextCallbackHandler/Confirm.java Fri Apr 10 05:43:40 2020 +0000 +++ b/test/jdk/com/sun/security/auth/callback/TextCallbackHandler/Confirm.java Fri Apr 10 15:05:42 2020 +0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,24 +23,38 @@ /* * @test - * @bug 6599079 + * @bug 6599079 8240848 * @summary Non-standard ConfirmationCallback throws NPE + * @modules jdk.security.auth */ import javax.security.auth.callback.Callback; import javax.security.auth.callback.ConfirmationCallback; import com.sun.security.auth.callback.TextCallbackHandler; import java.io.ByteArrayInputStream; +import java.io.InputStream; public class Confirm { public static void main(String[] args) throws Exception { - // Provide answer in an individual stream so that the program - // does not block. - System.setIn(new ByteArrayInputStream("1\n".getBytes())); + InputStream in = System.in; + try { + // Provide answer in an individual stream so that the program + // does not block. + System.setIn(new ByteArrayInputStream("1\n".getBytes())); + new TextCallbackHandler().handle(new Callback[]{ + new ConfirmationCallback("Prince", + ConfirmationCallback.INFORMATION, + new String[]{"To be", "Not to be"}, 0)}); - new TextCallbackHandler().handle(new Callback[]{ - new ConfirmationCallback("Prince", ConfirmationCallback.INFORMATION, - new String[]{"To be", "Not to be"}, 0)}); + System.setIn(new ByteArrayInputStream("-1\n".getBytes())); + new TextCallbackHandler().handle(new Callback[]{ + new ConfirmationCallback( + ConfirmationCallback.INFORMATION, + ConfirmationCallback.OK_CANCEL_OPTION, + ConfirmationCallback.OK)}); + } finally { + System.setIn(in); + } } }