Commit bc105b59 authored by JINMEI Tatuya's avatar JINMEI Tatuya
Browse files

[1583] not directly related, intermediate update: reject null RRset in

Message::addRRset().
parent 05a6a866
......@@ -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");
......
......@@ -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
......
......@@ -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) {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment