summaryrefslogtreecommitdiff
path: root/src/packet/packet.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/packet/packet.cpp')
-rw-r--r--src/packet/packet.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/packet/packet.cpp b/src/packet/packet.cpp
index ccadc9b..5954e7e 100644
--- a/src/packet/packet.cpp
+++ b/src/packet/packet.cpp
@@ -728,7 +728,21 @@ static inline uint16_t get_l2tpv2_hdr_len(const char *data, uint16_t len)
{
return 0;
}
- return ntohs(*((uint16_t *)(data + skip_len)));
+ uint16_t offset = ntohs(*((uint16_t *)(data + skip_len)));
+ if (offset == 0)
+ {
+ return skip_len + 2;
+ }
+
+ // invalid offset
+ if (offset > len)
+ {
+ return 0;
+ }
+ else
+ {
+ return offset;
+ }
}
else
{