diff options
author | Étienne Mollier <emollier@debian.org> | 2023-02-02 22:54:49 +0100 |
---|---|---|
committer | Étienne Mollier <emollier@debian.org> | 2023-02-02 22:54:49 +0100 |
commit | 9301e51cab3a6efdf1da580f5074bafe468d463f (patch) | |
tree | a381bc415dfbfe9017259879a0691e2321ac5298 | |
parent | 008ec6adad4d9c2e024e0c33052c226c9feb0b4c (diff) | |
parent | 7d1b2433a8d7a3634633a499a4e9357d458b2871 (diff) |
New upstream version 3.1.0+ds
-rw-r--r-- | Changes | 6 | ||||
-rw-r--r-- | META.yml | 2 | ||||
-rw-r--r-- | lib/Zonemaster/LDNS.pm | 2 | ||||
-rw-r--r-- | src/LDNS.xs | 19 |
4 files changed, 22 insertions, 7 deletions
@@ -1,5 +1,11 @@ Release history for Zonemaster component Zonemaster-LDNS +3.1.0 2023-01-31 (public fix version) + [Feature] + - Includes the OPT RDATA from the edns_data function + (needed to fix a bug in Zonemaster-Engine) (#166) + + 3.0.0 2022-12-19 [Breaking change] @@ -35,4 +35,4 @@ resources: bugtracker: https://github.com/zonemaster/zonemaster-ldns/issues license: http://opensource.org/licenses/bsd-license.php repository: https://github.com/zonemaster/zonemaster-ldns -version: 3.0.0 +version: 3.1.0 diff --git a/lib/Zonemaster/LDNS.pm b/lib/Zonemaster/LDNS.pm index a9b88e8..505ec10 100644 --- a/lib/Zonemaster/LDNS.pm +++ b/lib/Zonemaster/LDNS.pm @@ -2,7 +2,7 @@ package Zonemaster::LDNS; use 5.014; -our $VERSION = '3.0.0'; +our $VERSION = '3.1.0'; use parent 'Exporter'; our @EXPORT_OK = qw[to_idn has_idn ldns_version load_zonefile]; diff --git a/src/LDNS.xs b/src/LDNS.xs index e4b63a9..0b5dae2 100644 --- a/src/LDNS.xs +++ b/src/LDNS.xs @@ -1375,12 +1375,17 @@ packet_edns_version(obj,...) # ------------------- # Get/set EDNS data # -# Beware, this code can only take a unique U32 parameter which means it -# is not a full implementation of EDNS data but it is enough for our +# This function acts on the OPT RDATA field of a packet. An OPT RDATA consists of at least one triplet +# {OPTION-CODE, OPTION-LENGTH, OPTION-DATA}. +# When given a parameter, this function will set and return the field, although with the limitation described below. +# Otherwise, it will get and return the field (if any). +# +# Beware, when setting OPT RDATA, this code can only take a unique U32 parameter +# which means it is not a full implementation of EDNS data but it is enough for our # current purpose. It can only deal with option codes with OPTION-LENGTH=0 # (see 6.1.2 section of RFC 6891) which means OPTION-DATA is always empty. # -# returns: a bytes string +# returns: a bytes string (or undef if no OPT RDATA is found) # SV * packet_edns_data(obj,...) @@ -1391,7 +1396,7 @@ packet_edns_data(obj,...) { SvGETMAGIC(ST(1)); opt = ldns_native2rdf_int32(LDNS_RDF_TYPE_INT32, (U32)SvIV(ST(1))); - if(opt == NULL) + if(opt == NULL) { croak("Failed to set OPT RDATA"); } @@ -1399,8 +1404,12 @@ packet_edns_data(obj,...) } else { opt = ldns_pkt_edns_data(obj); + if(opt == NULL) + { + XSRETURN_UNDEF; + } } - RETVAL = newSVpvn((char*)(opt), 4); + RETVAL = newSVpvn((char*)(opt->_data), opt->_size); OUTPUT: RETVAL |