diff --git a/src/jdk.internal.le/share/classes/jdk/internal/org/jline/JdkConsoleProviderImpl.java b/src/jdk.internal.le/share/classes/jdk/internal/org/jline/JdkConsoleProviderImpl.java index 2a2a24d26b427..0f6108cae7b63 100644 --- a/src/jdk.internal.le/share/classes/jdk/internal/org/jline/JdkConsoleProviderImpl.java +++ b/src/jdk.internal.le/share/classes/jdk/internal/org/jline/JdkConsoleProviderImpl.java @@ -110,6 +110,8 @@ public char[] readPassword(String fmt, Object ... args) { return jline.readLine(fmt.formatted(args), '\0').toCharArray(); } catch (EndOfFileException eofe) { return null; + } finally { + jline.zeroOut(); } } diff --git a/src/jdk.internal.le/share/classes/jdk/internal/org/jline/reader/Buffer.java b/src/jdk.internal.le/share/classes/jdk/internal/org/jline/reader/Buffer.java index 9fdd6e0bd7e8f..c47746f566c39 100644 --- a/src/jdk.internal.le/share/classes/jdk/internal/org/jline/reader/Buffer.java +++ b/src/jdk.internal.le/share/classes/jdk/internal/org/jline/reader/Buffer.java @@ -84,4 +84,8 @@ public interface Buffer { void copyFrom(Buffer buffer); + // JDK specific modification + default void zeroOut() { + throw new UnsupportedOperationException(); + } } diff --git a/src/jdk.internal.le/share/classes/jdk/internal/org/jline/reader/LineReader.java b/src/jdk.internal.le/share/classes/jdk/internal/org/jline/reader/LineReader.java index 03729853ca549..053559a033251 100644 --- a/src/jdk.internal.le/share/classes/jdk/internal/org/jline/reader/LineReader.java +++ b/src/jdk.internal.le/share/classes/jdk/internal/org/jline/reader/LineReader.java @@ -750,4 +750,9 @@ enum SuggestionType { void setAutosuggestion(SuggestionType type); SuggestionType getAutosuggestion(); + + // JDK specific modification + default void zeroOut() { + getBuffer().zeroOut(); + } } diff --git a/src/jdk.internal.le/share/classes/jdk/internal/org/jline/reader/impl/BufferImpl.java b/src/jdk.internal.le/share/classes/jdk/internal/org/jline/reader/impl/BufferImpl.java index a3b2a21ac665a..d0c4c2cb7ae07 100644 --- a/src/jdk.internal.le/share/classes/jdk/internal/org/jline/reader/impl/BufferImpl.java +++ b/src/jdk.internal.le/share/classes/jdk/internal/org/jline/reader/impl/BufferImpl.java @@ -8,6 +8,7 @@ */ package jdk.internal.org.jline.reader.impl; +import java.util.Arrays; import java.util.Objects; import jdk.internal.org.jline.reader.Buffer; @@ -369,4 +370,10 @@ private void moveGapToCursor() { g1 += l; } } + + // JDK specific modification + @Override + public void zeroOut() { + Arrays.fill(buffer, 0); + } }