Skip to content

Commit 802cf6d

Browse files
author
Elia Trachsel
committed
[GR-70216] Bugfix jdk version issue: The platform property stdinEncoding was treated as if it were always available even though it is only available on jdk25+.
1 parent 8864bd5 commit 802cf6d

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

espresso/src/com.oracle.truffle.espresso/src/com/oracle/truffle/espresso/libs/libjava/impl/Target_java_lang_System.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ public static final class Raw {
8181
@TruffleBoundary
8282
public static @JavaType(String[].class) StaticObject platformProperties(@Inject EspressoContext ctx, @Inject TruffleIO io) {
8383
// Import properties from host.
84+
// All of those assignments should be considered as InformationLeaks!
8485
Props props = new Props(ctx);
8586
String[] known = new String[props.fixedLength];
8687
known[props.userHomeNdx] = java.lang.System.getProperty("user.home");
@@ -93,10 +94,10 @@ public static final class Raw {
9394
}
9495
if (ctx.getJavaVersion().java25OrLater()) {
9596
known[props.nativeEncodingNDX] = java.lang.System.getProperty("native.encoding");
97+
known[props.stdinEncodingNdx] = java.lang.System.getProperty("stdin.encoding");
9698
}
9799
known[props.stdoutEncodingNdx] = java.lang.System.getProperty("stdout.encoding");
98100
known[props.stderrEncodingNdx] = java.lang.System.getProperty("stderr.encoding");
99-
known[props.stdinEncodingNdx] = java.lang.System.getProperty("stdin.encoding");
100101

101102
known[props.osNameNdx] = java.lang.System.getProperty("os.name");
102103
known[props.osArchNdx] = java.lang.System.getProperty("os.arch");
@@ -150,8 +151,6 @@ private static final class Props {
150151
private final int displayLanguageNdx;
151152
private final int displayScriptNdx;
152153
private final int displayVariantNdx;
153-
// only in 21-
154-
private final int fileEncodingNdx;
155154
private final int fileSeparatorNdx;
156155
private final int formatCountryNdx;
157156
private final int formatLanguageNdx;
@@ -171,13 +170,10 @@ private static final class Props {
171170
private final int osNameNdx;
172171
private final int osVersionNdx;
173172
private final int pathSeparatorNdx;
174-
// only in 25+
175-
private final int nativeEncodingNDX;
176173
private final int socksNonProxyHostsNdx;
177174
private final int socksProxyHostNdx;
178175
private final int socksProxyPortNdx;
179176
private final int stderrEncodingNdx;
180-
private final int stdinEncodingNdx;
181177
private final int stdoutEncodingNdx;
182178
private final int sunArchAbiNdx;
183179
private final int sunArchDataModelNdx;
@@ -190,6 +186,11 @@ private static final class Props {
190186
private final int userHomeNdx;
191187
private final int userNameNdx;
192188
private final int fixedLength;
189+
// only in 21-
190+
private final int fileEncodingNdx;
191+
// only in 25+
192+
private final int nativeEncodingNDX;
193+
private final int stdinEncodingNdx;
193194

194195
private Props(EspressoContext ctx) {
195196
ObjectKlass guestRaw = ctx.getMeta().jdk_internal_util_SystemProps_Raw;
@@ -204,8 +205,10 @@ private Props(EspressoContext ctx) {
204205
}
205206
if (ctx.getJavaVersion().java25OrLater()) {
206207
nativeEncodingNDX = guestRaw.lookupDeclaredField(ctx.getNames().getOrCreate("_native_encoding_NDX"), Types._int).getInt(guestRaw.tryInitializeAndGetStatics());
208+
stdinEncodingNdx = guestRaw.lookupDeclaredField(ctx.getNames().getOrCreate("_stdin_encoding_NDX"), Types._int).getInt(guestRaw.tryInitializeAndGetStatics());
207209
} else {
208210
nativeEncodingNDX = -1;
211+
stdinEncodingNdx = -1;
209212
}
210213
fileSeparatorNdx = guestRaw.lookupDeclaredField(ctx.getNames().getOrCreate("_file_separator_NDX"), Types._int).getInt(guestRaw.tryInitializeAndGetStatics());
211214
formatCountryNdx = guestRaw.lookupDeclaredField(ctx.getNames().getOrCreate("_format_country_NDX"), Types._int).getInt(guestRaw.tryInitializeAndGetStatics());
@@ -230,7 +233,6 @@ private Props(EspressoContext ctx) {
230233
socksProxyHostNdx = guestRaw.lookupDeclaredField(ctx.getNames().getOrCreate("_socksProxyHost_NDX"), Types._int).getInt(guestRaw.tryInitializeAndGetStatics());
231234
socksProxyPortNdx = guestRaw.lookupDeclaredField(ctx.getNames().getOrCreate("_socksProxyPort_NDX"), Types._int).getInt(guestRaw.tryInitializeAndGetStatics());
232235
stderrEncodingNdx = guestRaw.lookupDeclaredField(ctx.getNames().getOrCreate("_stderr_encoding_NDX"), Types._int).getInt(guestRaw.tryInitializeAndGetStatics());
233-
stdinEncodingNdx = guestRaw.lookupDeclaredField(ctx.getNames().getOrCreate("_stdin_encoding_NDX"), Types._int).getInt(guestRaw.tryInitializeAndGetStatics());
234236
stdoutEncodingNdx = guestRaw.lookupDeclaredField(ctx.getNames().getOrCreate("_stdout_encoding_NDX"), Types._int).getInt(guestRaw.tryInitializeAndGetStatics());
235237
sunArchAbiNdx = guestRaw.lookupDeclaredField(ctx.getNames().getOrCreate("_sun_arch_abi_NDX"), Types._int).getInt(guestRaw.tryInitializeAndGetStatics());
236238
sunArchDataModelNdx = guestRaw.lookupDeclaredField(ctx.getNames().getOrCreate("_sun_arch_data_model_NDX"), Types._int).getInt(guestRaw.tryInitializeAndGetStatics());

0 commit comments

Comments
 (0)