+3522. [bug] DLZ lookups could fail to return SERVFAIL when
+ they ought to. [RT #32685]
+
3521. [bug] Address memory leak in opensslecdsa_link.c. [RT #32249]
3520. [bug] 'mctx' was not being referenced counted in some places
struct dlz_example_data *state;
const char *helper_name;
va_list ap;
- char soa_data[200];
+ char soa_data[1024];
const char *extra;
isc_result_t result;
int n;
strncmp(addrbuf, "10.53.0.1", 9) == 0)
return (ISC_R_NOMORE);
+ /*
+ * For bigcname.domain, return success so it appears to be
+ * the zone origin; this regression tests a bug in which
+ * zone origin nodes could fail to return SERVFAIL to the client.
+ */
+ if (strcasecmp(name, "bigcname.domain") == 0)
+ return (ISC_R_SUCCESS);
+
+ /*
+ * Return success if we have an exact match between the
+ * zone name and the qname
+ */
if (strcasecmp(state->zone_name, name) == 0)
return (ISC_R_SUCCESS);
return (result);
}
- if (strcmp(name, "too-long") == 0) {
+ if (strcmp(name, "too-long") == 0 ||
+ strcmp(zone, "bigcname.domain") == 0)
+ {
for (i = 0; i < 511; i++)
buf[i] = 'x';
buf[i] = '\0';
[ "$ret" -eq 0 ] || echo "I:failed"
status=`expr $status + $ret`
+ret=0
+echo "I:testing zone returning oversized data at zone origin"
+$DIG $DIGOPTS txt bigcname.domain > dig.out.ns1.7 2>&1 || ret=1
+grep "status: SERVFAIL" dig.out.ns1.7 > /dev/null || ret=1
+[ "$ret" -eq 0 ] || echo "I:failed"
+status=`expr $status + $ret`
+
exit $status
MAYBE_UNLOCK(sdlz->dlzimp);
- if (result != ISC_R_SUCCESS && !isorigin && !create) {
+ if (result == ISC_R_NOTFOUND && (isorigin || create))
+ result = ISC_R_SUCCESS;
+
+ if (result != ISC_R_SUCCESS) {
destroynode(node);
return (result);
}
sdlz->dbdata, node);
MAYBE_UNLOCK(sdlz->dlzimp);
if (result != ISC_R_SUCCESS &&
- result != ISC_R_NOTIMPLEMENTED) {
+ result != ISC_R_NOTIMPLEMENTED)
+ {
destroynode(node);
return (result);
}