aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ggsn/ggsn.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/ggsn/ggsn.c b/ggsn/ggsn.c
index c6a6dac..1e92956 100644
--- a/ggsn/ggsn.c
+++ b/ggsn/ggsn.c
@@ -215,14 +215,14 @@ static bool pco_contains_proto(struct ul255_t *pco, uint16_t prot)
uint8_t *cur = pco->v + 1;
/* iterate over PCO and check if protocol contained */
- while (cur + 2 < pco->v + pco->l) {
+ while (cur + 3 <= pco->v + pco->l) {
uint16_t cur_prot = osmo_load16be(cur);
uint8_t cur_len = cur[2];
if (cur_prot == prot)
return true;
if (cur_len == 0)
break;
- cur += cur_len;
+ cur += cur_len + 3;
}
return false;
}