* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: dighost.c,v 1.221.2.19.2.13 2004/06/19 02:30:11 sra Exp $ */
+/* $Id: dighost.c,v 1.221.2.19.2.14 2004/06/30 23:57:52 marka Exp $ */
/*
* Notice to programmers: Do not use this code as an example of how to
dns_name_t * rdata_name,
dns_rdataset_t ** rdataset,
dns_rdataset_t ** sigrdataset);
-isc_result_t nameFromString( const char *str, dns_name_t *p_ret );
+static void nameFromString(const char *str, dns_name_t *p_ret);
int inf_name(dns_name_t * name1, dns_name_t * name2);
isc_result_t opentmpkey(isc_mem_t *mctx, const char *file,
char **tempp, FILE **fp);
#ifdef DIG_SIGCHASE
/* Setup the list of messages for +sigchase */
ISC_LIST_INIT(chase_message_list);
+ ISC_LIST_INIT(chase_message_list2);
+ dns_name_init(&chase_name, NULL);
+#if DIG_SIGCHASE_TD
+ dns_name_init(&chase_current_name, NULL);
+ dns_name_init(&chase_authority_name, NULL);
+#endif
+#if DIG_SIGCHASE_BU
+ dns_name_init(&chase_signame, NULL);
+#endif
+
#endif
}
current_lookup->sigchase = ISC_FALSE;
goto novalidation;
}
- result = nameFromString(current_lookup->textname,
- &query_name);
- check_result(result, "nameFromString");
+ dns_name_init(&query_name, NULL);
+ nameFromString(current_lookup->textname, &query_name);
for (i = 0; i< tk_list.nb_tk; i++) {
key_name = dst_key_name(tk_list.key[i]);
MXNAME);
isc_buffer_free(&b);
- result = nameFromString(current_lookup
- ->textnamesigchase,
- &chase_name);
- check_result(result, "nameFromString");
+ nameFromString(current_lookup->textnamesigchase,
+ &chase_name);
dns_name_init(&chase_authority_name, NULL);
}
chase_msg = ISC_LIST_NEXT(chase_msg, link);
isc_mem_free(mctx, ptr);
}
+ if (dns_name_dynamic(&chase_name))
+ dns_name_free(&chase_name, mctx);
+#if DIG_SIGCHASE_TD
+ if (dns_name_dynamic(&chase_current_name))
+ dns_name_free(&chase_current_name, mctx);
+ if (dns_name_dynamic(&chase_authority_name))
+ dns_name_free(&chase_authority_name, mctx);
+#endif
+#if DIG_SIGCHASE_BU
+ if (dns_name_dynamic(&chase_signame))
+ dns_name_free(&chase_signame, mctx);
+#endif
debug("Destroy memory");
}
-isc_result_t
-nameFromString( const char *str, dns_name_t *p_ret )
-{
- int len = strlen(str);
- int ret;
+static void
+nameFromString(const char *str, dns_name_t *p_ret) {
+ size_t len = strlen(str);
+ isc_result_t result;
isc_buffer_t buffer;
dns_fixedname_t fixedname;
- REQUIRE( p_ret);
- REQUIRE( str != NULL );
- isc_buffer_init( &buffer, str, len );
- isc_buffer_add( &buffer, len );
+ REQUIRE(p_ret != NULL);
+ REQUIRE(str != NULL);
+
+ isc_buffer_init(&buffer, str, len);
+ isc_buffer_add(&buffer, len);
dns_fixedname_init(&fixedname);
- ret = dns_name_fromtext( dns_fixedname_name(&fixedname), &buffer,
- dns_rootname, ISC_TRUE, NULL);
- if ( ret != ISC_R_SUCCESS ) return ret;
+ result = dns_name_fromtext(dns_fixedname_name(&fixedname), &buffer,
+ dns_rootname, ISC_TRUE, NULL);
+ check_result(result, "nameFromString");
- dns_name_init(p_ret, NULL );
+ if (dns_name_dynamic(p_ret))
+ dns_name_free(p_ret, mctx);
- ret = dns_name_dup( dns_fixedname_name(&fixedname), mctx, p_ret );
- return ret;
+ result = dns_name_dup(dns_fixedname_name(&fixedname), mctx, p_ret);
+ check_result(result, "nameFromString");
}
lookup->rdtype = lookup->rdtype_sigchase;
lookup->rdtypeset = ISC_TRUE;
lookup->qrdtype = lookup->qrdtype_sigchase;
-
-
s = ISC_LIST_HEAD(lookup->my_server_list);
while (s != NULL) {
void
-dup_name(dns_name_t *source, dns_name_t* target, isc_mem_t *mctx)
-{
+dup_name(dns_name_t *source, dns_name_t *target, isc_mem_t *mctx) {
isc_result_t result;
- dns_name_init(target, NULL);
+ if (dns_name_dynamic(target))
+ dns_name_free(target, mctx);
result = dns_name_dup(source, mctx, target);
check_result(result, "dns_name_dup");
}
dns_name_init(&tmp_name, NULL);
result = child_of_zone(&chase_name, &chase_current_name,
&tmp_name);
- if (chase_authority_name.labels != 0)
+ if (dns_name_dynamic(&chase_authority_name))
dns_name_free( &chase_authority_name, mctx);
dup_name(&tmp_name, &chase_authority_name, mctx);
printf(";; and we try to continue chain of trust"
have_delegation_ns = ISC_FALSE;
delegation_follow = ISC_TRUE;
error_message = NULL;
- dns_name_free(&chase_current_name, mctx);
dup_name(&chase_authority_name, &chase_current_name, mctx);
dns_name_free(&chase_authority_name, mctx);
return;
dns_name_t rdata_name;
isc_result_t ret = ISC_R_FAILURE;
+ dns_name_init(&rdata_name, NULL);
result = prove_nx(error_message, &chase_name,
current_lookup->rdclass_sigchase,
current_lookup->rdtype_sigchase, &rdata_name,
cleanandgo:
printf(";; cleanandgo \n");
- dns_name_free(&chase_name, mctx);
- if (chase_current_name.labels != 0)
+ if (dns_name_dynamic(&chase_current_name))
dns_name_free(&chase_current_name, mctx);
- if (chase_authority_name.labels != 0)
+ if (dns_name_dynamic(&chase_authority_name))
dns_name_free(&chase_authority_name, mctx);
clean_trustedkey();
return;
if (result == ISC_R_FAILURE) {
printf("\n;; RRSIG is missing for continue validation:"
" FAILED\n\n");
- if (chase_name.ndata != NULL)
+ if (dns_name_dynamic(&chase_name))
dns_name_free(&chase_name, mctx);
return ISC_R_NOTFOUND;
}
printf("\n;; DNSKEY is missing to continue validation:"
" FAILED\n\n");
dns_name_free(&chase_signame, mctx);
- if (chase_name.ndata != NULL)
+ if (dns_name_dynamic(&chase_name))
dns_name_free(&chase_name, mctx);
return ISC_R_NOTFOUND;
}
printf("\n;; RRSIG for DNSKEY is missing to continue"
" validation : FAILED\n\n");
dns_name_free(&chase_signame, mctx);
- if (chase_name.ndata != NULL)
+ if (dns_name_dynamic(&chase_name))
dns_name_free(&chase_name, mctx);
return ISC_R_NOTFOUND;
}
dns_name_t query_name;
+ dns_name_init(&query_name, NULL);
nameFromString(current_lookup->textname, &query_name);
result = prove_nx(msg, &query_name, current_lookup->rdclass,
" the RRset\n");
INSIST(chase_sigdsrdataset != NULL);
- dns_name_free(&chase_name, mctx);
dup_name(&chase_signame, &chase_name, mctx);
dns_name_free(&chase_signame, mctx);
chase_rdataset = chase_dsrdataset;