diff options
| author | yangwei <[email protected]> | 2024-08-09 14:33:15 +0800 |
|---|---|---|
| committer | luwenpeng <[email protected]> | 2024-08-12 15:48:37 +0800 |
| commit | f9174f00844ef3d08615d653e795b37f07d35337 (patch) | |
| tree | 2199d7e0152d41db781a00af890c79e3f5421d16 | |
| parent | f25c80d7f5665b64f969ee4fa55dd49165bb6684 (diff) | |
🐞 fix(calc_gtp1_hdr_len): fix endless loop for ext hdr
| -rw-r--r-- | src/packet/gtp1_utils.h | 8 |
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 { |
