Advertisement
eromang

ISC BIND 9.8.1 P1 diff DoS

Nov 16th, 2011
773
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 4.55 KB | None | 0 0
  1. diff -Naur bind-9.8.1/CHANGES bind-9.8.1-P1/CHANGES
  2. --- bind-9.8.1/CHANGES  2011-08-24 05:17:30.000000000 +0200
  3. +++ bind-9.8.1-P1/CHANGES       2011-11-16 10:34:40.000000000 +0100
  4. @@ -1,3 +1,9 @@
  5. +       --- 9.8.1-P1 released ---
  6. +
  7. +3218.  [security]      Cache lookup could return RRSIG data associated with
  8. +                       nonexistent records, leading to an assertion
  9. +                       failure. [RT #26590]
  10. +
  11.         --- 9.8.1 released ---
  12.  
  13.         --- 9.8.1rc1 released ---
  14. diff -Naur bind-9.8.1/bin/named/query.c bind-9.8.1-P1/bin/named/query.c
  15. --- bind-9.8.1/bin/named/query.c        2011-06-09 05:14:03.000000000 +0200
  16. +++ bind-9.8.1-P1/bin/named/query.c     2011-11-16 10:32:08.000000000 +0100
  17. @@ -15,7 +15,7 @@
  18.   * PERFORMANCE OF THIS SOFTWARE.
  19.   */
  20.  
  21. -/* $Id: query.c,v 1.353.8.11 2011-06-09 03:14:03 marka Exp $ */
  22. +/* $Id: query.c,v 1.353.8.11.4.1 2011-11-16 09:32:08 marka Exp $ */
  23.  
  24.  /*! \file */
  25.  
  26. @@ -1393,11 +1393,9 @@
  27.                         goto addname;
  28.                 if (result == DNS_R_NCACHENXRRSET) {
  29.                         dns_rdataset_disassociate(rdataset);
  30. -                       /*
  31. -                        * Negative cache entries don't have sigrdatasets.
  32. -                        */
  33. -                       INSIST(sigrdataset == NULL ||
  34. -                              ! dns_rdataset_isassociated(sigrdataset));
  35. +                       if (sigrdataset != NULL &&
  36. +                           dns_rdataset_isassociated(sigrdataset))
  37. +                               dns_rdataset_disassociate(sigrdataset);
  38.                 }
  39.                 if (result == ISC_R_SUCCESS) {
  40.                         mname = NULL;
  41. @@ -1438,8 +1436,9 @@
  42.                         goto addname;
  43.                 if (result == DNS_R_NCACHENXRRSET) {
  44.                         dns_rdataset_disassociate(rdataset);
  45. -                       INSIST(sigrdataset == NULL ||
  46. -                              ! dns_rdataset_isassociated(sigrdataset));
  47. +                       if (sigrdataset != NULL &&
  48. +                           dns_rdataset_isassociated(sigrdataset))
  49. +                               dns_rdataset_disassociate(sigrdataset);
  50.                 }
  51.                 if (result == ISC_R_SUCCESS) {
  52.                         mname = NULL;
  53. @@ -1889,10 +1888,8 @@
  54.                 goto setcache;
  55.         if (result == DNS_R_NCACHENXRRSET) {
  56.                 dns_rdataset_disassociate(rdataset);
  57. -               /*
  58. -                * Negative cache entries don't have sigrdatasets.
  59. -                */
  60. -               INSIST(! dns_rdataset_isassociated(sigrdataset));
  61. +               if (dns_rdataset_isassociated(sigrdataset))
  62. +                       dns_rdataset_disassociate(sigrdataset);
  63.         }
  64.         if (result == ISC_R_SUCCESS) {
  65.                 /* Remember the result as a cache */
  66. diff -Naur bind-9.8.1/lib/dns/rbtdb.c bind-9.8.1-P1/lib/dns/rbtdb.c
  67. --- bind-9.8.1/lib/dns/rbtdb.c  2011-06-09 01:02:42.000000000 +0200
  68. +++ bind-9.8.1-P1/lib/dns/rbtdb.c       2011-11-16 10:32:08.000000000 +0100
  69. @@ -15,7 +15,7 @@
  70.   * PERFORMANCE OF THIS SOFTWARE.
  71.   */
  72.  
  73. -/* $Id: rbtdb.c,v 1.310.8.5 2011-06-08 23:02:42 each Exp $ */
  74. +/* $Id: rbtdb.c,v 1.310.8.5.4.1 2011-11-16 09:32:08 marka Exp $ */
  75.  
  76.  /*! \file */
  77.  
  78. @@ -5053,7 +5053,7 @@
  79.                               rdataset);
  80.                 if (need_headerupdate(found, search.now))
  81.                         update = found;
  82. -               if (foundsig != NULL) {
  83. +               if (!NEGATIVE(found) && foundsig != NULL) {
  84.                         bind_rdataset(search.rbtdb, node, foundsig, search.now,
  85.                                       sigrdataset);
  86.                         if (need_headerupdate(foundsig, search.now))
  87. @@ -5685,7 +5685,7 @@
  88.         }
  89.         if (found != NULL) {
  90.                 bind_rdataset(rbtdb, rbtnode, found, now, rdataset);
  91. -               if (foundsig != NULL)
  92. +               if (!NEGATIVE(found) && foundsig != NULL)
  93.                         bind_rdataset(rbtdb, rbtnode, foundsig, now,
  94.                                       sigrdataset);
  95.         }
  96. diff -Naur bind-9.8.1/version bind-9.8.1-P1/version
  97. --- bind-9.8.1/version  2011-08-24 04:08:26.000000000 +0200
  98. +++ bind-9.8.1-P1/version       2011-11-16 10:32:07.000000000 +0100
  99. @@ -1,4 +1,4 @@
  100. -# $Id: version,v 1.53.8.9 2011-08-24 02:08:26 marka Exp $
  101. +# $Id: version,v 1.53.8.9.6.1 2011-11-16 09:32:07 marka Exp $
  102.  #
  103.  # This file must follow /bin/sh rules.  It is imported directly via
  104.  # configure.
  105. @@ -6,5 +6,5 @@
  106.  MAJORVER=9
  107.  MINORVER=8
  108.  PATCHVER=1
  109. -RELEASETYPE=
  110. -RELEASEVER=
  111. +RELEASETYPE=-P
  112. +RELEASEVER=1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement