@@ -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