]> git.ipfire.org Git - thirdparty/ldns.git/commitdiff
Fix LOC centimetre parser to handle decimetres properly.
authorFelipe Gasper <felipe@felipegasper.com>
Thu, 11 Mar 2021 11:36:32 +0000 (06:36 -0500)
committerFelipe Gasper <felipe@felipegasper.com>
Thu, 11 Mar 2021 11:49:13 +0000 (06:49 -0500)
Issue #121: Previously “0.1” was parsed as “0.01”; this fixes that.

str2host.c

index 09a51aa2cd400473b41b4482dbddcb5c0e8308fc..81930d695ad19a6e3b27600f3187f5cd83e396b9 100644 (file)
@@ -879,13 +879,16 @@ loc_parse_cm(char* my_str, char** endstr, uint8_t* m, uint8_t* e)
        /* read <digits>[.<digits>][mM] */
        /* into mantissa exponent format for LOC type */
        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;