Merge branch '56-replace-getquad-with-inet_pton' into 'master'
Replace getquad() with inet_pton() Closes #56 See merge request isc-projects/bind9!99
This commit is contained in:
17
CHANGES
17
CHANGES
@@ -1,3 +1,6 @@
|
||||
4906. [func] Replace getquad() with inet_pton(), completing
|
||||
change #4900. [GL #56]
|
||||
|
||||
4905. [bug] irs_resconf_load() ignored resolv.conf syntax errors
|
||||
when "domain" or "search" options were present in that
|
||||
file. [GL #110]
|
||||
@@ -15,7 +18,9 @@
|
||||
for a domain that time out, as well as the servers
|
||||
that respond. [GL #64]
|
||||
|
||||
4900. [cleanup] Remove all uses of inet_aton(). [GL #13]
|
||||
4900. [func] Remove all uses of inet_aton(). As a result of this
|
||||
change, IPv4 addresses are now only accepted in
|
||||
dotted-quad format. [GL #13]
|
||||
|
||||
4899. [test] Convert most of the remaining system tests to be able
|
||||
to run in parallel, continuing the work from change
|
||||
@@ -151,11 +156,11 @@
|
||||
|
||||
4860. [bug] isc_int8_t should be signed char. [RT #46973]
|
||||
|
||||
4859. [bug] A loop was possible when attempting to validate
|
||||
unsigned CNAME responses from secure zones;
|
||||
this caused a delay in returning SERVFAIL and
|
||||
also increased the chances of encountering
|
||||
CVE-2017-3145. [RT #46839]
|
||||
4859. [bug] A loop was possible when attempting to validate
|
||||
unsigned CNAME responses from secure zones;
|
||||
this caused a delay in returning SERVFAIL and
|
||||
also increased the chances of encountering
|
||||
CVE-2017-3145. [RT #46839]
|
||||
|
||||
4858. [security] Addresses could be referenced after being freed
|
||||
in resolver.c, causing an assertion failure.
|
||||
|
||||
@@ -88,6 +88,12 @@
|
||||
been removed. [GL #93]
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
IPv4 addresses in forms other than dotted-quad are no longer
|
||||
accepted in master files. [GL #13] [GL #56]
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
|
||||
|
||||
@@ -378,24 +378,6 @@ locator_pton(const char *src, unsigned char *dst) {
|
||||
return (1);
|
||||
}
|
||||
|
||||
static inline int
|
||||
getquad(const void *src, struct in_addr *dst,
|
||||
isc_lex_t *lexer, dns_rdatacallbacks_t *callbacks)
|
||||
{
|
||||
int result;
|
||||
|
||||
result = inet_pton(AF_INET, src, dst);
|
||||
if (result != 1 && callbacks != NULL) {
|
||||
const char *name = isc_lex_getsourcename(lexer);
|
||||
if (name == NULL)
|
||||
name = "UNKNOWN";
|
||||
(*callbacks->warn)(callbacks, "%s:%lu: \"%s\" "
|
||||
"is not a decimal dotted quad", name,
|
||||
isc_lex_getsourceline(lexer), src);
|
||||
}
|
||||
return (result);
|
||||
}
|
||||
|
||||
static inline isc_result_t
|
||||
name_duporclone(const dns_name_t *source, isc_mem_t *mctx, dns_name_t *target) {
|
||||
|
||||
|
||||
@@ -77,7 +77,7 @@ fromtext_ipseckey(ARGS_FROMTEXT) {
|
||||
break;
|
||||
|
||||
case 1:
|
||||
if (getquad(DNS_AS_STR(token), &addr, lexer, callbacks) != 1)
|
||||
if (inet_pton(AF_INET, DNS_AS_STR(token), &addr) != 1)
|
||||
RETTOK(DNS_R_BADDOTTEDQUAD);
|
||||
isc_buffer_availableregion(target, ®ion);
|
||||
if (region.length < 4)
|
||||
|
||||
@@ -41,7 +41,7 @@ fromtext_l32(ARGS_FROMTEXT) {
|
||||
RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string,
|
||||
ISC_FALSE));
|
||||
|
||||
if (getquad(DNS_AS_STR(token), &addr, lexer, callbacks) != 1)
|
||||
if (inet_pton(AF_INET, DNS_AS_STR(token), &addr) != 1)
|
||||
RETTOK(DNS_R_BADDOTTEDQUAD);
|
||||
isc_buffer_availableregion(target, ®ion);
|
||||
if (region.length < 4)
|
||||
|
||||
@@ -33,11 +33,12 @@ fromtext_hs_a(ARGS_FROMTEXT) {
|
||||
UNUSED(origin);
|
||||
UNUSED(options);
|
||||
UNUSED(rdclass);
|
||||
UNUSED(callbacks);
|
||||
|
||||
RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string,
|
||||
ISC_FALSE));
|
||||
|
||||
if (getquad(DNS_AS_STR(token), &addr, lexer, callbacks) != 1)
|
||||
if (inet_pton(AF_INET, DNS_AS_STR(token), &addr) != 1)
|
||||
RETTOK(DNS_R_BADDOTTEDQUAD);
|
||||
isc_buffer_availableregion(target, ®ion);
|
||||
if (region.length < 4)
|
||||
|
||||
@@ -35,11 +35,12 @@ fromtext_in_a(ARGS_FROMTEXT) {
|
||||
UNUSED(origin);
|
||||
UNUSED(options);
|
||||
UNUSED(rdclass);
|
||||
UNUSED(callbacks);
|
||||
|
||||
RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string,
|
||||
ISC_FALSE));
|
||||
|
||||
if (getquad(DNS_AS_STR(token), &addr, lexer, callbacks) != 1)
|
||||
if (inet_pton(AF_INET, DNS_AS_STR(token), &addr) != 1)
|
||||
RETTOK(DNS_R_BADDOTTEDQUAD);
|
||||
isc_buffer_availableregion(target, ®ion);
|
||||
if (region.length < 4)
|
||||
|
||||
@@ -93,6 +93,7 @@ fromtext_in_wks(ARGS_FROMTEXT) {
|
||||
UNUSED(origin);
|
||||
UNUSED(options);
|
||||
UNUSED(rdclass);
|
||||
UNUSED(callbacks);
|
||||
|
||||
RUNTIME_CHECK(isc_once_do(&once, init_lock) == ISC_R_SUCCESS);
|
||||
|
||||
@@ -117,7 +118,7 @@ fromtext_in_wks(ARGS_FROMTEXT) {
|
||||
ISC_FALSE));
|
||||
|
||||
isc_buffer_availableregion(target, ®ion);
|
||||
if (getquad(DNS_AS_STR(token), &addr, lexer, callbacks) != 1)
|
||||
if (inet_pton(AF_INET, DNS_AS_STR(token), &addr) != 1)
|
||||
CHECKTOK(DNS_R_BADDOTTEDQUAD);
|
||||
if (region.length < 4)
|
||||
return (ISC_R_NOSPACE);
|
||||
|
||||
@@ -1137,6 +1137,20 @@ ATF_TC_HEAD(wks, tc) {
|
||||
atf_tc_set_md_var(tc, "descr", "WKS RDATA manipulations");
|
||||
}
|
||||
ATF_TC_BODY(wks, tc) {
|
||||
text_ok_t text_ok[] = {
|
||||
/*
|
||||
* Valid, IPv4 address in dotted-quad form.
|
||||
*/
|
||||
TEXT_VALID("127.0.0.1 6"),
|
||||
/*
|
||||
* Invalid, IPv4 address not in dotted-quad form.
|
||||
*/
|
||||
TEXT_INVALID("127.1 6"),
|
||||
/*
|
||||
* Sentinel.
|
||||
*/
|
||||
TEXT_SENTINEL()
|
||||
};
|
||||
wire_ok_t wire_ok[] = {
|
||||
/*
|
||||
* Too short.
|
||||
@@ -1162,7 +1176,7 @@ ATF_TC_BODY(wks, tc) {
|
||||
|
||||
UNUSED(tc);
|
||||
|
||||
check_rdata(NULL, wire_ok, ISC_FALSE, dns_rdataclass_in,
|
||||
check_rdata(text_ok, wire_ok, ISC_FALSE, dns_rdataclass_in,
|
||||
dns_rdatatype_wks, sizeof(dns_rdata_in_wks_t));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user