From: Roy Marples Date: Thu, 2 Jul 2015 15:51:29 +0000 (+0000) Subject: Use constants defined in arpa/nameser.h rather than magic numbers. X-Git-Tag: v6.9.1~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e3e434d42153e92fe148f987cc9cfe2065fde68b;p=thirdparty%2Fdhcpcd.git Use constants defined in arpa/nameser.h rather than magic numbers. --- diff --git a/dhcp-common.c b/dhcp-common.c index 8945d9a0..062f3e92 100644 --- a/dhcp-common.c +++ b/dhcp-common.c @@ -27,6 +27,8 @@ #include +#include + #include #include #include @@ -277,6 +279,11 @@ decode_rfc3397(char *out, size_t len, const uint8_t *p, size_t pl) int hops; uint8_t ltype; + if (pl > NS_MAXCDNAME) { + errno = E2BIG; + return -1; + } + count = 0; start = out; start_len = len; @@ -328,6 +335,10 @@ decode_rfc3397(char *out, size_t len, const uint8_t *p, size_t pl) errno = ENOBUFS; return -1; } + if (l + 1 > NS_MAXLABEL) { + errno = EINVAL; + return -1; + } memcpy(out, q, l); out += l; *out++ = '.'; @@ -355,6 +366,10 @@ decode_rfc3397(char *out, size_t len, const uint8_t *p, size_t pl) if (count) /* Don't count the trailing NUL */ count--; + if (count > NS_MAXDNAME) { + errno = E2BIG; + return -1; + } return (ssize_t)count; } @@ -404,7 +419,7 @@ valid_domainname(char *lbl, int type) !start && *lbl != ' ' && *lbl != '\0') || isalnum(c)) { - if (++len > 63) { + if (++len > NS_MAXLABEL) { errno = ERANGE; errset = 1; break;