components/bind/patches/rndc-keys.patch
branchs11-sru
changeset 2294 957c8f463552
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/bind/patches/rndc-keys.patch	Sun Jun 24 06:59:24 2012 -0700
@@ -0,0 +1,51 @@
+--- a/bin/named/controlconf.c	Fri Jun  1 10:05:49 2012
++++ b/bin/named/controlconf.c	Tue Jun  5 17:27:55 2012
+@@ -371,12 +371,14 @@
+ 		secret.rend = secret.rstart + key->secret.length;
+ 		result = isccc_cc_fromwire(&ccregion, &request, &secret);
+ 		if (result == ISC_R_SUCCESS)
+ 			break;
+ 		isc_mem_put(listener->mctx, secret.rstart, REGION_SIZE(secret));
+-		log_invalid(&conn->ccmsg, result);
+-		goto cleanup;
++		if (result != ISCCC_R_BADAUTH) {
++		    log_invalid(&conn->ccmsg, result);
++		    goto cleanup;
++		}
+ 	}
+ 
+ 	if (key == NULL) {
+ 		log_invalid(&conn->ccmsg, ISCCC_R_BADAUTH);
+ 		goto cleanup;
+--- a/lib/isccc/cc.c	Wed Jun  6 01:41:54 2012
++++ b/lib/isccc/cc.c	Wed Jun  6 01:43:22 2012
+@@ -397,12 +397,10 @@
+ 		if (first_tag && secret != NULL && strcmp(key, "_auth") == 0)
+ 			checksum_rstart = source->rstart;
+ 		first_tag = ISC_FALSE;
+ 	}
+ 
+-	*alistp = alist;
+-
+ 	if (secret != NULL) {
+ 		if (checksum_rstart != NULL)
+ 			result = verify(alist, checksum_rstart,
+ 					(source->rend - checksum_rstart),
+ 					secret);
+--- a/lib/isccc/cc.c	Wed Jun  6 01:45:26 2012
++++ b/lib/isccc/cc.c	Wed Jun  6 01:43:22 2012
+@@ -408,11 +408,13 @@
+ 			result = ISCCC_R_BADAUTH;
+ 	} else
+ 		result = ISC_R_SUCCESS;
+ 
+  bad:
+-	if (result != ISC_R_SUCCESS)
++	if (result == ISC_R_SUCCESS)
++		*alistp = alist;
++	else
+ 		isccc_sexpr_free(&alist);
+ 
+ 	return (result);
+ }
+