diff --git a/CHANGES.md b/CHANGES.md index 9a9a1373c..da4bce33a 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -4,6 +4,7 @@ Future * [PR#196](https://github.com/kaitoy/pcap4j/pull/196): add protocol implementations for 4 icmpv6 types (RFC6275). ### Bug Fixes ### +* [Issues#200](https://github.com/kaitoy/pcap4j/issues/200): Fix a bug that causes NullPointerException in DnsDomainName#toString(byte[]). ### Other Changes ### diff --git a/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataCName.java b/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataCName.java index bcafc851c..defe980fb 100644 --- a/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataCName.java +++ b/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataCName.java @@ -1,6 +1,6 @@ /*_########################################################################## _## - _## Copyright (C) 2016 Pcap4J.org + _## Copyright (C) 2016-2019 Pcap4J.org _## _########################################################################## */ @@ -113,7 +113,7 @@ private String convertToString(String indent, byte[] headerRawData) { .append(ls) .append(indent) .append(" CNAME: ") - .append(cName.toString(headerRawData)) + .append(headerRawData != null ? cName.toString(headerRawData) : cName.toString()) .append(ls); return sb.toString(); diff --git a/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataMInfo.java b/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataMInfo.java index 56761f61e..9c2a3c562 100644 --- a/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataMInfo.java +++ b/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataMInfo.java @@ -1,6 +1,6 @@ /*_########################################################################## _## - _## Copyright (C) 2016 Pcap4J.org + _## Copyright (C) 2016-2019 Pcap4J.org _## _########################################################################## */ @@ -162,11 +162,11 @@ private String convertToString(String indent, byte[] headerRawData) { .append(ls) .append(indent) .append(" RMAILBX: ") - .append(rMailBx.toString(headerRawData)) + .append(headerRawData != null ? rMailBx.toString(headerRawData) : rMailBx.toString()) .append(ls) .append(indent) .append(" EMAILBX: ") - .append(eMailBx.toString(headerRawData)) + .append(headerRawData != null ? eMailBx.toString(headerRawData) : eMailBx.toString()) .append(ls); return sb.toString(); diff --git a/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataMb.java b/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataMb.java index 5660d978c..ad9c86b1e 100644 --- a/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataMb.java +++ b/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataMb.java @@ -1,6 +1,6 @@ /*_########################################################################## _## - _## Copyright (C) 2016 Pcap4J.org + _## Copyright (C) 2016-2019 Pcap4J.org _## _########################################################################## */ @@ -111,7 +111,7 @@ private String convertToString(String indent, byte[] headerRawData) { .append(ls) .append(indent) .append(" MADNAME: ") - .append(maDName.toString(headerRawData)) + .append(headerRawData != null ? maDName.toString(headerRawData) : maDName.toString()) .append(ls); return sb.toString(); diff --git a/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataMd.java b/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataMd.java index 16ecd5c37..764bc95fe 100644 --- a/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataMd.java +++ b/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataMd.java @@ -1,6 +1,6 @@ /*_########################################################################## _## - _## Copyright (C) 2016 Pcap4J.org + _## Copyright (C) 2016-2019 Pcap4J.org _## _########################################################################## */ @@ -114,7 +114,7 @@ private String convertToString(String indent, byte[] headerRawData) { .append(ls) .append(indent) .append(" MADNAME: ") - .append(maDName.toString(headerRawData)) + .append(headerRawData != null ? maDName.toString(headerRawData) : maDName.toString()) .append(ls); return sb.toString(); diff --git a/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataMf.java b/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataMf.java index ba52a49b5..c235794e9 100644 --- a/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataMf.java +++ b/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataMf.java @@ -1,6 +1,6 @@ /*_########################################################################## _## - _## Copyright (C) 2016 Pcap4J.org + _## Copyright (C) 2016-2019 Pcap4J.org _## _########################################################################## */ @@ -114,7 +114,7 @@ private String convertToString(String indent, byte[] headerRawData) { .append(ls) .append(indent) .append(" MADNAME: ") - .append(maDName.toString(headerRawData)) + .append(headerRawData != null ? maDName.toString(headerRawData) : maDName.toString()) .append(ls); return sb.toString(); diff --git a/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataMg.java b/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataMg.java index edcd25444..0661a7245 100644 --- a/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataMg.java +++ b/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataMg.java @@ -1,6 +1,6 @@ /*_########################################################################## _## - _## Copyright (C) 2016 Pcap4J.org + _## Copyright (C) 2016-2019 Pcap4J.org _## _########################################################################## */ @@ -113,7 +113,7 @@ private String convertToString(String indent, byte[] headerRawData) { .append(ls) .append(indent) .append(" MGMNAME: ") - .append(mgMName.toString(headerRawData)) + .append(headerRawData != null ? mgMName.toString(headerRawData) : mgMName.toString()) .append(ls); return sb.toString(); diff --git a/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataMr.java b/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataMr.java index fb42de63f..5b2de7ca8 100644 --- a/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataMr.java +++ b/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataMr.java @@ -1,6 +1,6 @@ /*_########################################################################## _## - _## Copyright (C) 2016 Pcap4J.org + _## Copyright (C) 2016-2019 Pcap4J.org _## _########################################################################## */ @@ -113,7 +113,7 @@ private String convertToString(String indent, byte[] headerRawData) { .append(ls) .append(indent) .append(" NEWNAME: ") - .append(newName.toString(headerRawData)) + .append(headerRawData != null ? newName.toString(headerRawData) : newName.toString()) .append(ls); return sb.toString(); diff --git a/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataMx.java b/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataMx.java index 453a70203..897d102d7 100644 --- a/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataMx.java +++ b/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataMx.java @@ -1,6 +1,6 @@ /*_########################################################################## _## - _## Copyright (C) 2016 Pcap4J.org + _## Copyright (C) 2016-2019 Pcap4J.org _## _########################################################################## */ @@ -157,7 +157,7 @@ private String convertToString(String indent, byte[] headerRawData) { .append(ls) .append(indent) .append(" EXCHANGE: ") - .append(exchange.toString(headerRawData)) + .append(headerRawData != null ? exchange.toString(headerRawData) : exchange.toString()) .append(ls); return sb.toString(); diff --git a/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataNs.java b/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataNs.java index f7a0afe01..a3f2fc6be 100644 --- a/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataNs.java +++ b/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataNs.java @@ -1,6 +1,6 @@ /*_########################################################################## _## - _## Copyright (C) 2016 Pcap4J.org + _## Copyright (C) 2016-2019 Pcap4J.org _## _########################################################################## */ @@ -113,7 +113,7 @@ private String convertToString(String indent, byte[] headerRawData) { .append(ls) .append(indent) .append(" NSDNAME: ") - .append(nsDName.toString(headerRawData)) + .append(headerRawData != null ? nsDName.toString(headerRawData) : nsDName.toString()) .append(ls); return sb.toString(); diff --git a/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataPtr.java b/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataPtr.java index e1dc9f1eb..125154456 100644 --- a/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataPtr.java +++ b/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataPtr.java @@ -1,6 +1,6 @@ /*_########################################################################## _## - _## Copyright (C) 2016 Pcap4J.org + _## Copyright (C) 2016-2019 Pcap4J.org _## _########################################################################## */ @@ -113,7 +113,7 @@ private String convertToString(String indent, byte[] headerRawData) { .append(ls) .append(indent) .append(" PTRDNAME: ") - .append(ptrDName.toString(headerRawData)) + .append(headerRawData != null ? ptrDName.toString(headerRawData) : ptrDName.toString()) .append(ls); return sb.toString(); diff --git a/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataSoa.java b/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataSoa.java index 8b89ecf59..58d26523b 100644 --- a/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataSoa.java +++ b/pcap4j-core/src/main/java/org/pcap4j/packet/DnsRDataSoa.java @@ -1,6 +1,6 @@ /*_########################################################################## _## - _## Copyright (C) 2016 Pcap4J.org + _## Copyright (C) 2016-2019 Pcap4J.org _## _########################################################################## */ @@ -287,11 +287,11 @@ private String convertToString(String indent, byte[] headerRawData) { .append(ls) .append(indent) .append(" MNAME: ") - .append(mName.toString(headerRawData)) + .append(headerRawData != null ? mName.toString(headerRawData) : mName.toString()) .append(ls) .append(indent) .append(" RNAME: ") - .append(rName.toString(headerRawData)) + .append(headerRawData != null ? rName.toString(headerRawData) : rName.toString()) .append(ls) .append(indent) .append(" SERIAL: ") diff --git a/pcap4j-packettest/src/test/java/org/pcap4j/packet/DnsPacketTest.java b/pcap4j-packettest/src/test/java/org/pcap4j/packet/DnsPacketTest.java index 2f8f05697..889a072b5 100644 --- a/pcap4j-packettest/src/test/java/org/pcap4j/packet/DnsPacketTest.java +++ b/pcap4j-packettest/src/test/java/org/pcap4j/packet/DnsPacketTest.java @@ -584,4 +584,17 @@ public void testNewPacket() { throw new AssertionError(e); } } + + @Test + public void testToString() { + for (DnsResourceRecord r : packet.getHeader().getAnswers()) { + logger.info(r.toString()); + } + for (DnsResourceRecord r : packet.getHeader().getAuthorities()) { + logger.info(r.toString()); + } + for (DnsResourceRecord r : packet.getHeader().getAdditionalInfo()) { + logger.info(r.toString()); + } + } }