BIND 10 trac2850_3, updated. bb8a03934fabf266b6ade7b0bdf07d429dbdec43 [2850] Update comment about when the segment had been cleared
BIND 10 source code commits
bind10-changes at lists.isc.org
Wed May 15 14:21:54 UTC 2013
The branch, trac2850_3 has been updated
via bb8a03934fabf266b6ade7b0bdf07d429dbdec43 (commit)
via dd7ce4249bbc5e81c3e085ab143e4cb54efdfc44 (commit)
from 7b1c5d9ea91c0a4db83c191587220c65417ffdc5 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit bb8a03934fabf266b6ade7b0bdf07d429dbdec43
Author: Mukund Sivaraman <muks at isc.org>
Date: Wed May 15 19:51:41 2013 +0530
[2850] Update comment about when the segment had been cleared
commit dd7ce4249bbc5e81c3e085ab143e4cb54efdfc44
Author: JINMEI Tatuya <jinmei at isc.org>
Date: Wed May 15 19:49:47 2013 +0530
[2850] Add a comment about unsafe code
-----------------------------------------------------------------------
Summary of changes:
.../datasrc/memory/zone_table_segment_mapped.cc | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
-----------------------------------------------------------------------
diff --git a/src/lib/datasrc/memory/zone_table_segment_mapped.cc b/src/lib/datasrc/memory/zone_table_segment_mapped.cc
index 186e580..efadab7 100644
--- a/src/lib/datasrc/memory/zone_table_segment_mapped.cc
+++ b/src/lib/datasrc/memory/zone_table_segment_mapped.cc
@@ -122,6 +122,18 @@ ZoneTableSegmentMapped::processHeader(MemorySegmentMapped& segment,
}
}
try {
+ // FIXME: in theory this code is not safe:
+ // - ZoneTable::create could throw MemorySegmentGrown, leaking
+ // ptr
+ // - even on successful return from ZoneTable::create(), ptr
+ // could be reallocated due to its internal implementation detail
+ // So, to make it 100% safe we should protect both ptr and
+ // zone table in something similar to SegmentObjectHolder, get
+ // their addresses via the holder's get() method, and expect
+ // MemorySegmentGrown and handle it. However, in this specific
+ // context the segment should have sufficient capacity in practice
+ // and the above cases are extremely unlikely to happen. So
+ // we go for simpler code for now.
ZoneTableHeader* new_header = new(ptr)
ZoneTableHeader(ZoneTable::create(segment, rrclass_));
segment.setNamedAddress(ZONE_TABLE_HEADER_NAME, new_header);
@@ -369,8 +381,8 @@ bool
ZoneTableSegmentMapped::isWritable() const {
if (!isUsable()) {
// If reset() was never performed for this segment, or if the
- // most recent reset() had failed, then the segment is not
- // writable.
+ // most recent reset() had failed, or if the segment had been
+ // cleared, then the segment is not writable.
return (false);
}
More information about the bind10-changes
mailing list