Skip to content

Commit f8f5d66

Browse files
committed
Fix DataInputStream.readUTF() panic on non-UTF-8 (EUC-KR) input
1 parent 9796297 commit f8f5d66

1 file changed

Lines changed: 9 additions & 2 deletions

File tree

java_runtime/src/classes/java/io/data_input_stream.rs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -185,8 +185,15 @@ impl DataInputStream {
185185
let mut buf = vec![0; length as _];
186186
jvm.array_raw_buffer(&java_array).await?.read(0, &mut buf)?;
187187

188-
// TODO handle modified utf-8
189-
let string = RustString::from_utf8(buf).unwrap();
188+
// TODO handle modified utf-8 (EUC-KR fallback)
189+
let string = match RustString::from_utf8(buf) {
190+
Ok(x) => x,
191+
Err(e) => {
192+
let bytes = e.into_bytes();
193+
let (decoded, _, _) = encoding_rs::EUC_KR.decode(&bytes);
194+
decoded.into_owned()
195+
}
196+
};
190197

191198
Ok(JavaLangString::from_rust_string(jvm, &string).await?.into())
192199
}

0 commit comments

Comments
 (0)