Parcourir la source

[2107] fixed a use-after-free bug in rdataSetDeleter.

JINMEI Tatuya il y a 12 ans
Parent
commit
8c9a5e0ce9
1 fichiers modifiés avec 4 ajouts et 1 suppressions
  1. 4 1
      src/lib/datasrc/memory/zone_data.cc

+ 4 - 1
src/lib/datasrc/memory/zone_data.cc

@@ -42,9 +42,12 @@ void
 rdataSetDeleter(RRClass rrclass, util::MemorySegment* mem_sgmt,
                 RdataSet* rdataset_head)
 {
+    RdataSet* rdataset_next;
     for (RdataSet* rdataset = rdataset_head;
          rdataset != NULL;
-         rdataset = rdataset->getNext()) {
+         rdataset = rdataset_next)
+    {
+        rdataset_next = rdataset->getNext();
         RdataSet::destroy(*mem_sgmt, rrclass, rdataset);
     }
 }