]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- Fix parse of LOC RR type for decimetres.
authorW.C.A. Wijngaards <wouter@nlnetlabs.nl>
Thu, 11 Mar 2021 12:22:05 +0000 (13:22 +0100)
committerW.C.A. Wijngaards <wouter@nlnetlabs.nl>
Thu, 11 Mar 2021 12:22:05 +0000 (13:22 +0100)
doc/Changelog
sldns/str2wire.c
testdata/test_ldnsrr.5
testdata/test_ldnsrr.c5

index 3b3073405321c94e7b948bbdca00688358c15783..b6bbfa2100c16704bdc07c480e496e46a7daf29a 100644 (file)
@@ -1,3 +1,6 @@
+11 March 2021: Wouter
+       - Fix parse of LOC RR type for decimetres.
+
 5 March 2021: Wouter
        - Workaround for #439: prevent loops in the reuse rbtree.
        - Debug output for #411 and #439: printout internal error and details.
index 977cda28a2da8e0f83120a5a057320acd04c3c00..70eec6dabcedd3e822fcb1c0713a88e3a982c03c 100644 (file)
@@ -1491,13 +1491,17 @@ static int
 loc_parse_cm(char* my_str, char** endstr, uint8_t* m, uint8_t* e)
 {
        uint32_t meters = 0, cm = 0, val;
+       char* cm_endstr;
        while (isblank((unsigned char)*my_str)) {
                my_str++;
        }
        meters = (uint32_t)strtol(my_str, &my_str, 10);
        if (*my_str == '.') {
                my_str++;
-               cm = (uint32_t)strtol(my_str, &my_str, 10);
+               cm = (uint32_t)strtol(my_str, &cm_endstr, 10);
+               if(cm_endstr == my_str + 1)
+                       cm *= 10;
+               my_str = cm_endstr;
        }
        if (meters >= 1) {
                *e = 2;
index 9be72b4aa8a2b52fe23bd7af1af182870caba96e..c6e7ea2ba549f3b8aa8a48c9a27db91e270ab9a3 100644 (file)
@@ -170,3 +170,5 @@ example.      86400   IN  ZONEMD  2018031900 241 1 ( e1846540e33a9e41 89792d18d5
 uri.arpa.       3600    IN      ZONEMD  2018100702 1 1 ( 1291b78ddf7669b1a39d014d87626b709b55774c5d7d58fa dc556439889a10eaf6f11d615900a4f996bd46279514e473 )
 ; from draft-ietf-dnsop-dns-zone-digest-12#section-A.5
 root-servers.net.     3600000 IN  ZONEMD  2018091100 1 1 ( f1ca0ccd91bd5573d9f431c00ee0101b2545c97602be0a97 8a3b11dbfc1c776d5b3e86ae3d973d6b5349ba7f04340f79 )
+; from ldns issue #121, 0.10m was parsed as 0.01m.
+foo.   12345   IN      LOC     12 45 52.333 N 105 40 33.452 W -24m 0.1m 0.1m 0.1m
index 98c2ed38057f42c60069d72a5c10d9bee033fbc0..f30aa0b7357c508538fd4004633252d40fe56cf6 100644 (file)
@@ -210,3 +210,5 @@ example.    86400   IN      ZONEMD  2018031900 241 1 E1846540E33A9E4189792D18D5D131F605FC28
 uri.arpa.      3600    IN      ZONEMD  2018100702 1 1 1291B78DDF7669B1A39D014D87626B709B55774C5D7D58FADC556439889A10EAF6F11D615900A4F996BD46279514E473
 0C726F6F742D73657276657273036E657400003F00010036EE8000367849A05C0101F1CA0CCD91BD5573D9F431C00EE0101B2545C97602BE0A978A3B11DBFC1C776D5B3E86AE3D973D6B5349BA7F04340F79
 root-servers.net.      3600000 IN      ZONEMD  2018091100 1 1 F1CA0CCD91BD5573D9F431C00EE0101B2545C97602BE0A978A3B11DBFC1C776D5B3E86AE3D973D6B5349BA7F04340F79
+03666F6F00001D00010000303900100011111182BD2D4D69530BD400988D20
+foo.   12345   IN      LOC     12 45 52.333 N 105 40 33.452 W -24m 0.10m 0.10m 0.10m