提交 13a5a0ba 编写于 作者: D dsamersoff

8015604: JDP packets containing ideographic characters are broken

Summary: Code uses string length rather than byte array length and non ascii entry brakes packet.
Reviewed-by: dholmes, jbachorik, sla
上级 3b1566cf
......@@ -60,9 +60,12 @@ public final class JdpPacketWriter {
*/
public void addEntry(String entry)
throws IOException {
pkt.writeShort(entry.length());
byte[] b = entry.getBytes("UTF-8");
pkt.write(b);
/* DataOutputStream.writeUTF() do essentially
* the same as:
* pkt.writeShort(entry.getBytes("UTF-8").length);
* pkt.write(entry.getBytes("UTF-8"));
*/
pkt.writeUTF(entry);
}
/**
......
......@@ -32,6 +32,12 @@ import sun.management.jdp.JdpException;
public class JdpUnitTest {
static byte[] russian_name = {(byte)0xd0,(byte)0xbf,(byte)0xd1,(byte)0x80,(byte)0xd0,(byte)0xbe,(byte)0xd0,(byte)0xb2,
(byte)0xd0,(byte)0xb5,(byte)0xd1,(byte)0x80,(byte)0xd0,(byte)0xba,(byte)0xd0,(byte)0xb0,
(byte)0x20,(byte)0xd1,(byte)0x81,(byte)0xd0,(byte)0xb2,(byte)0xd1,(byte)0x8f,(byte)0xd0,
(byte)0xb7,(byte)0xd0,(byte)0xb8,(byte)0x0a};
/**
* This test tests that complete packet is build correctly
*/
......@@ -42,7 +48,7 @@ public class JdpUnitTest {
{
JdpJmxPacket p1 = new JdpJmxPacket(UUID.randomUUID(), "fake://unit-test");
p1.setMainClass("FakeUnitTest");
p1.setInstanceName("Fake");
p1.setInstanceName( new String(russian_name,"UTF-8"));
byte[] b = p1.getPacketData();
JdpJmxPacket p2 = new JdpJmxPacket(b);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册