]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
1587. [bug] dns_message_settsigkey() failed to clear existing key.
authorMark Andrews <marka@isc.org>
Wed, 10 Mar 2004 00:47:40 +0000 (00:47 +0000)
committerMark Andrews <marka@isc.org>
Wed, 10 Mar 2004 00:47:40 +0000 (00:47 +0000)
                        [RT #10590]

CHANGES
lib/dns/message.c

diff --git a/CHANGES b/CHANGES
index 929bcb76b848837cb3f5e2477f6b8d4d4b2e9122..26d6e70685a59bb4620889d56824e787710e398b 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,7 @@
 1588.  [bug]           win32: TCP sockets could become blocked. [RT #10115]
 
-1587.  [placeholder]   rt10590
+1587.  [bug]           dns_message_settsigkey() failed to clear existing key.
+                       [RT #10590]
 
 1586.  [func]          "check-names" is now implemented.
 
index ec855d95abb53ce9a773d84c2ec516cbdeb38756..81304265d699825a89559fa6c7492ab602e09394 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: message.c,v 1.221 2004/03/05 05:09:21 marka Exp $ */
+/* $Id: message.c,v 1.222 2004/03/10 00:47:40 marka Exp $ */
 
 /***
  *** Imports
@@ -2481,6 +2481,13 @@ dns_message_settsigkey(dns_message_t *msg, dns_tsigkey_t *key) {
        REQUIRE(DNS_MESSAGE_VALID(msg));
        REQUIRE(msg->state == DNS_SECTION_ANY);
 
+       if (key == NULL && msg->tsigkey != NULL) {
+               if (msg->sig_reserved != 0) {
+                       dns_message_renderrelease(msg, msg->sig_reserved);
+                       msg->sig_reserved = 0;
+               }
+               dns_tsigkey_detach(&msg->tsigkey);
+       }
        if (key != NULL) {
                REQUIRE(msg->tsigkey == NULL && msg->sig0key == NULL);
                dns_tsigkey_attach(key, &msg->tsigkey);