Skip to content

Commit 24a4cdb

Browse files
committed
Do not change writerIndex when decode DnsPtrRecord, backport netty/netty#5760
1 parent 4b8dc67 commit 24a4cdb

File tree

2 files changed

+25
-5
lines changed

2 files changed

+25
-5
lines changed

netty-bp/codec-dns/src/main/java/io/netty/handler/codec/dns/DefaultDnsRecordDecoder.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,10 +90,10 @@ protected DnsRecord decodeRecord(
9090

9191
if (type == DnsRecordType.PTR) {
9292
in.setIndex(offset, offset + length);
93-
return new DefaultDnsPtrRecord(name, dnsClass, timeToLive, decodeName0(in));
93+
return new DefaultDnsPtrRecord(name, dnsClass, timeToLive, decodeName0(in.slice(offset, length)));
9494
}
9595
return new DefaultDnsRawRecord(
96-
name, type, dnsClass, timeToLive, in.duplicate().setIndex(offset, offset + length).retain());
96+
name, type, dnsClass, timeToLive, in.slice(offset, length).retain());
9797
}
9898

9999
/**

netty-bp/codec-dns/src/test/java/io/netty/handler/codec/dns/DefaultDnsRecordDecoderTest.java

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@
1717

1818
import io.netty.buffer.ByteBuf;
1919
import io.netty.buffer.Unpooled;
20-
import io.netty.util.internal.StringUtil;
21-
import org.junit.Assert;
2220
import org.junit.Test;
2321

22+
import static org.junit.Assert.assertEquals;
23+
2424
public class DefaultDnsRecordDecoderTest {
2525

2626
@Test
@@ -63,7 +63,27 @@ public void testDecodeEmptyNameFromExtraZeroes() {
6363
private static void testDecodeName(String expected, ByteBuf buffer) {
6464
try {
6565
DefaultDnsRecordDecoder decoder = new DefaultDnsRecordDecoder();
66-
Assert.assertEquals(expected, decoder.decodeName(buffer));
66+
assertEquals(expected, decoder.decodeName0(buffer));
67+
} finally {
68+
buffer.release();
69+
}
70+
}
71+
72+
@Test
73+
public void testDecodePtrRecord() throws Exception {
74+
DefaultDnsRecordDecoder decoder = new DefaultDnsRecordDecoder();
75+
ByteBuf buffer = Unpooled.buffer().writeByte(0);
76+
int readerIndex = buffer.readerIndex();
77+
int writerIndex = buffer.writerIndex();
78+
try {
79+
DnsPtrRecord record = (DnsPtrRecord) decoder.decodeRecord(
80+
"netty.io", DnsRecordType.PTR, DnsRecord.CLASS_IN, 60, buffer, 0, 1);
81+
assertEquals("netty.io.", record.name());
82+
assertEquals(DnsRecord.CLASS_IN, record.dnsClass());
83+
assertEquals(60, record.timeToLive());
84+
assertEquals(DnsRecordType.PTR, record.type());
85+
assertEquals(readerIndex, buffer.readerIndex());
86+
assertEquals(writerIndex, buffer.writerIndex());
6787
} finally {
6888
buffer.release();
6989
}

0 commit comments

Comments
 (0)