From: Jelte Jansen Date: Thu, 18 Aug 2005 09:11:31 +0000 (+0000) Subject: cast X-Git-Tag: release-1.0.0~269 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=05e7d6959f6707671fa9447f4bccaedf3379fbc0;p=thirdparty%2Fldns.git cast --- diff --git a/str2host.c b/str2host.c index 573b8aa4..c4c825bc 100644 --- a/str2host.c +++ b/str2host.c @@ -27,6 +27,60 @@ #include #endif +bool +ldns_is_ipv4_addr(const char *str) +{ + int a, i; + const char *dot = str; + + if (strlen(str) < 7 || strlen(str) > 16) { + return false; + } + + for (i = 0; i < 3; i++) { + a = atoi(dot); + if (a < 0 || a > 255) { + return false; + } + dot = strchr(dot, '.'); + if (!dot) { + return false; + } + } + a = atoi(dot); + if (a < 0 || a > 255) { + return false; + } + + return true; +} + +/* todo: check for more errors (like ffffff:f etc) */ +bool +ldns_is_ipv6_addr(const char *str) +{ + int a; + size_t i; + const char *dot = str; + + if (strlen(str) < 3 || strlen(str) > 40) { + return false; + } + + for (i = 0; i < strlen(str); i++) { + if (str[i] != ':' && + ldns_hexdigit_to_int(str[i]) < 0) { + return false; + } + } + a = atoi(dot); + if (a < 0 || a > 255) { + return false; + } + + return true; +} + ldns_status ldns_str2rdf_int16(ldns_rdf **rd, const char *shortstr) {