From 47ed2a6b4a83db4525dd792fbe430a91479efd1c Mon Sep 17 00:00:00 2001 From: Alexander Couzens Date: Wed, 3 Feb 2021 11:46:59 +0100 Subject: gprs_ns2_frgre: set a correct gre pointer for ipv6 Also fixes a nullpointer deref because iph is NULL on IPv6 Related: CID#216555 Change-Id: I2ff868a7bba6151a2202df774ff022c02b8c34cb --- src/gb/gprs_ns2_frgre.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/gb/gprs_ns2_frgre.c b/src/gb/gprs_ns2_frgre.c index 853375d0..f163704e 100644 --- a/src/gb/gprs_ns2_frgre.c +++ b/src/gb/gprs_ns2_frgre.c @@ -339,7 +339,11 @@ static struct msgb *read_nsfrgre_msg(struct osmo_fd *bfd, int *error, break; } - greh = (struct gre_hdr *) (msg->data + iph->ihl*4); + if (iph) + greh = (struct gre_hdr *) (msg->data + iph->ihl*4); + else + greh = (struct gre_hdr *) (msg->data + sizeof(struct ip6_hdr)); + if (greh->flags) { LOGBIND(bind, LOGL_NOTICE, "Unknown GRE flags 0x%04x\n", osmo_ntohs(greh->flags)); } -- cgit v1.2.3