hnb-test: don't segfault when msgb has no l3
diff --git a/src/tests/hnb-test.c b/src/tests/hnb-test.c
index 1aeca0f..879cbe0 100644
--- a/src/tests/hnb-test.c
+++ b/src/tests/hnb-test.c
@@ -249,6 +249,10 @@
 	}
 
 	gh = (struct gsm48_hdr *) msgb_l3(rxm);
+	if (!gh) {
+		printf("received msg buffer with invalid layer 3. Ignoring.\n");
+		return -1;
+	}
 	length -= (const char *)&gh->data[0] - (const char *)gh;
 
 	parse_res = tlv_parse(&tp, &gsm48_mm_att_tlvdef, &gh->data[0], length, 0, 0);
@@ -274,6 +278,10 @@
 	}
 
 	gh = (struct gsm48_hdr *)msgb_l3(rxm);
+	if (!gh) {
+		printf("received msg buffer with invalid layer 3. Ignoring.\n");
+		return -1;
+	}
 	lai = (struct gsm48_loc_area_id *)&gh->data[0];
 
 	uint16_t mcc, mnc, lac;
@@ -337,6 +345,10 @@
 	}
 
 	gh = (struct gsm48_hdr *) msgb_l3(rxm);
+	if (!gh) {
+		printf("received msg buffer with invalid layer 3. Ignoring.\n");
+		return -1;
+	}
 	length -= (const char *)&gh->data[0] - (const char *)gh;
 
 	if (length < sizeof(*ar)) {
@@ -364,6 +376,10 @@
 	OSMO_ASSERT(!chan->is_ps);
 
 	struct gsm48_hdr *gh = msgb_l3(rxm);
+	if (!gh) {
+		printf("received msg buffer with invalid layer 3. Ignoring.\n");
+		return -1;
+	}
 	uint8_t msg_type = gsm48_hdr_msg_type(gh);
 	int sent_tmsi;
 
@@ -407,6 +423,10 @@
 	//            '05 04 0d' ==> LU reject
 
 	struct gsm48_hdr *gh = msgb_l3(msg);
+	if (!gh) {
+		printf("received msg buffer with invalid layer 3. Ignoring.\n");
+		return -1;
+	}
 	uint8_t pdisc = gsm48_hdr_pdisc(gh);
 
 	switch (pdisc) {