Commit 6e92e97f authored by Tomek Mrugalski's avatar Tomek Mrugalski 🛰

[3546] (hopefully) last changes after review:

 - clarified that returned offset refers to last successfully parsed option
 - unpackOptions6() now returns proper offset if vendor-option is truncated
parent 936d262d
......@@ -260,8 +260,9 @@ size_t LibDHCP::unpackOptions6(const OptionBuffer& buf,
if (opt_type == D6O_VENDOR_OPTS) {
if (offset + 4 > length) {
// Truncated vendor-option. There is expected at least 4 bytes
// long enterprise-id field
return (offset);
// long enterprise-id field. Let's roll back option code + option
// length (4 bytes) and return.
return (offset - 4);
}
// Parse this as vendor option
......
......@@ -123,6 +123,7 @@ public:
/// of to be used to parse options in the packets.
/// @param options Reference to option container. Options will be
/// put here.
/// @return offset to the first byte after the last successfully parsed option
static size_t unpackOptions4(const OptionBuffer& buf,
const std::string& option_space,
isc::dhcp::OptionCollection& options);
......@@ -147,7 +148,7 @@ public:
/// offset to beginning of relay_msg option will be stored in it.
/// @param relay_msg_len reference to a size_t structure. If specified,
/// length of the relay_msg option will be stored in it.
/// @return offset to the first byte after last parsed option
/// @return offset to the first byte after the last successfully parsed option
static size_t unpackOptions6(const OptionBuffer& buf,
const std::string& option_space,
isc::dhcp::OptionCollection& options,
......@@ -192,6 +193,7 @@ public:
/// @param buf Buffer to be parsed.
/// @param options Reference to option container. Options will be
/// put here.
/// @return offset to the first byte after the last successfully parsed option
static size_t unpackVendorOptions6(const uint32_t vendor_id,
const OptionBuffer& buf,
isc::dhcp::OptionCollection& options);
......@@ -206,6 +208,7 @@ public:
/// @param buf Buffer to be parsed.
/// @param options Reference to option container. Options will be
/// put here.
/// @return offset to the first byte after the last successfully parsed option
static size_t unpackVendorOptions4(const uint32_t vendor_id, const OptionBuffer& buf,
isc::dhcp::OptionCollection& options);
......
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