From: Felipe Gasper Date: Thu, 11 Mar 2021 11:36:32 +0000 (-0500) Subject: Fix LOC centimetre parser to handle decimetres properly. X-Git-Tag: 1.8.0-rc.1~18^2~1^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3ab2ac7048101c545e0400e19696961f4dc06aca;p=thirdparty%2Fldns.git Fix LOC centimetre parser to handle decimetres properly. Issue #121: Previously “0.1” was parsed as “0.01”; this fixes that. --- diff --git a/str2host.c b/str2host.c index 09a51aa2..81930d69 100644 --- a/str2host.c +++ b/str2host.c @@ -879,13 +879,16 @@ loc_parse_cm(char* my_str, char** endstr, uint8_t* m, uint8_t* e) /* read [.][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;