diff --git a/codec-dns/src/main/java/io/netty/handler/codec/dns/DnsResponseDecoder.java b/codec-dns/src/main/java/io/netty/handler/codec/dns/DnsResponseDecoder.java index 3b52a9ca9d..7a3706b824 100644 --- a/codec-dns/src/main/java/io/netty/handler/codec/dns/DnsResponseDecoder.java +++ b/codec-dns/src/main/java/io/netty/handler/codec/dns/DnsResponseDecoder.java @@ -19,6 +19,7 @@ import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.socket.DatagramPacket; +import io.netty.handler.codec.CorruptedFrameException; import io.netty.handler.codec.MessageToMessageDecoder; import io.netty.util.CharsetUtil; @@ -99,7 +100,7 @@ public class DnsResponseDecoder extends MessageToMessageDecoder // check for loops checked += 2; if (checked >= length) { - return null; + throw new CorruptedFrameException("name contains a loop."); } } else { name.append(buf.toString(buf.readerIndex(), len, CharsetUtil.UTF_8)).append('.'); diff --git a/codec-dns/src/test/java/io/netty/handler/codec/dns/DnsResponseTest.java b/codec-dns/src/test/java/io/netty/handler/codec/dns/DnsResponseTest.java index 8e205462ad..707f0135cb 100644 --- a/codec-dns/src/test/java/io/netty/handler/codec/dns/DnsResponseTest.java +++ b/codec-dns/src/test/java/io/netty/handler/codec/dns/DnsResponseTest.java @@ -19,8 +19,7 @@ import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import io.netty.channel.embedded.EmbeddedChannel; import io.netty.channel.socket.DatagramPacket; -import io.netty.handler.codec.DecoderException; - +import io.netty.handler.codec.CorruptedFrameException; import org.junit.Assert; import org.junit.Rule; import org.junit.Test; @@ -100,8 +99,7 @@ public class DnsResponseTest { public void readMalormedResponseTest() throws Exception { EmbeddedChannel embedder = new EmbeddedChannel(new DnsResponseDecoder()); ByteBuf packet = embedder.alloc().buffer(512).writeBytes(malformedLoopPacket); - exception.expect(DecoderException.class); - exception.expectMessage("java.lang.NullPointerException: name"); + exception.expect(CorruptedFrameException.class); embedder.writeInbound(new DatagramPacket(packet, null, new InetSocketAddress(0))); } }