summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryangwei <[email protected]>2024-08-09 14:33:15 +0800
committerluwenpeng <[email protected]>2024-08-12 15:48:37 +0800
commitf9174f00844ef3d08615d653e795b37f07d35337 (patch)
tree2199d7e0152d41db781a00af890c79e3f5421d16
parentf25c80d7f5665b64f969ee4fa55dd49165bb6684 (diff)
🐞 fix(calc_gtp1_hdr_len): fix endless loop for ext hdr
-rw-r--r--src/packet/gtp1_utils.h8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/packet/gtp1_utils.h b/src/packet/gtp1_utils.h
index 3ca4235..2077d9b 100644
--- a/src/packet/gtp1_utils.h
+++ b/src/packet/gtp1_utils.h
@@ -209,15 +209,15 @@ static inline uint16_t calc_gtp1_hdr_len(const char *data, uint16_t len)
{
return 0;
}
- uint8_t ext_hdr_len = *((char *)data + offset) * 4;
+ uint8_t ext_hdr_len = *((char *)data + offset) * 4 - 2;
if (offset + ext_hdr_len > len)
{
return 0;
}
- offset += ext_hdr_len; // skip extension header
- next_ext_hdr = *((char *)data + offset - 1);
+ offset += ext_hdr_len + 1; // skip extension header
+ next_ext_hdr = *((char *)data + offset);
}
- return offset;
+ return offset+1; //next_ext_hdr==0 occupy 1 byte
}
else
{