Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ISC Open Source Projects
Kea
Commits
bc105b59
Commit
bc105b59
authored
Feb 13, 2012
by
JINMEI Tatuya
Browse files
[1583] not directly related, intermediate update: reject null RRset in
Message::addRRset().
parent
05a6a866
Changes
3
Hide whitespace changes
Inline
Side-by-side
src/lib/dns/message.cc
View file @
bc105b59
...
...
@@ -489,6 +489,10 @@ Message::getRRCount(const Section section) const {
void
Message
::
addRRset
(
const
Section
section
,
RRsetPtr
rrset
,
const
bool
sign
)
{
if
(
!
rrset
)
{
isc_throw
(
InvalidParameter
,
"NULL RRset is given to Message::addRRset"
);
}
if
(
impl_
->
mode_
!=
Message
::
RENDER
)
{
isc_throw
(
InvalidMessageOperation
,
"addRRset performed in non-render mode"
);
...
...
src/lib/dns/message.h
View file @
bc105b59
...
...
@@ -462,15 +462,19 @@ public:
/// This interface takes into account the RRSIG possibly attached to
/// \c rrset. This interface design needs to be revisited later.
///
/// This method is only allowed in the \c RENDER mode;
/// if the \c Message is in other mode, an exception of class
/// InvalidMessageOperation will be thrown.
/// \c section must be a valid constant of the \c Section type;
/// otherwise, an exception of class \c OutOfRange will be thrown.
///
/// Note that \c addRRset() does not currently check for duplicate
/// data before inserting RRsets. The caller is responsible for
/// checking for these (see \c hasRRset() below).
///
/// \throw InvalidParameter rrset is NULL
/// \throw InvalidMessageOperation The message is not in the \c RENDER
/// mode.
/// \throw OutOfRange \c section doesn't specify a valid \c Section value.
///
/// \param section The message section to which the rrset is to be added
/// \param rrset The rrset to be added. Must not be NULL.
/// \param sign If true, and if \c rrset has associated RRSIGs, the
/// RRSIGs will also be added to the same section of the message.
void
addRRset
(
const
Section
section
,
RRsetPtr
rrset
,
bool
sign
=
false
);
/// \brief Determine whether the given section already has an RRset
...
...
src/lib/dns/tests/message_unittest.cc
View file @
bc105b59
...
...
@@ -324,6 +324,10 @@ TEST_F(MessageTest, badAddRRset) {
rrset_a
),
InvalidMessageOperation
);
// out-of-band section ID
EXPECT_THROW
(
message_render
.
addRRset
(
bogus_section
,
rrset_a
),
OutOfRange
);
// NULL RRset
EXPECT_THROW
(
message_render
.
addRRset
(
Message
::
SECTION_ANSWER
,
RRsetPtr
()),
InvalidParameter
);
}
TEST_F
(
MessageTest
,
hasRRset
)
{
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment