gbproxy: Only search by valid identifiers

Don't return a link_info if TLLI is 0 resp. P-TMSI is 0xffff. These
values are used for uninitialised or cleared fields and can possibly
match several entries.

Sponsored-by: On-Waves ehf
diff --git a/openbsc/src/gprs/gb_proxy_tlli.c b/openbsc/src/gprs/gb_proxy_tlli.c
index f5d7ef6..fdb1509 100644
--- a/openbsc/src/gprs/gb_proxy_tlli.c
+++ b/openbsc/src/gprs/gb_proxy_tlli.c
@@ -38,6 +38,9 @@
 	struct gbproxy_link_info *link_info;
 	struct gbproxy_patch_state *state = &peer->patch_state;
 
+	if (!tlli)
+		return NULL;
+
 	llist_for_each_entry(link_info, &state->logical_links, list)
 		if (link_info->tlli.current == tlli ||
 		    link_info->tlli.assigned == tlli)
@@ -53,6 +56,9 @@
 	struct gbproxy_link_info *link_info;
 	struct gbproxy_patch_state *state = &peer->patch_state;
 
+	if (ptmsi == GSM_RESERVED_TMSI)
+		return NULL;
+
 	llist_for_each_entry(link_info, &state->logical_links, list)
 		if (link_info->tlli.ptmsi == ptmsi)
 			return link_info;
@@ -67,6 +73,9 @@
 	struct gbproxy_link_info *link_info;
 	struct gbproxy_patch_state *state = &peer->patch_state;
 
+	if (!tlli)
+		return NULL;
+
 	/* Don't care about the NSEI */
 	llist_for_each_entry(link_info, &state->logical_links, list)
 		if (link_info->sgsn_tlli.current == tlli ||
@@ -83,6 +92,9 @@
 	struct gbproxy_link_info *link_info;
 	struct gbproxy_patch_state *state = &peer->patch_state;
 
+	if (!tlli)
+		return NULL;
+
 	llist_for_each_entry(link_info, &state->logical_links, list)
 		if ((link_info->sgsn_tlli.current == tlli ||
 		     link_info->sgsn_tlli.assigned == tlli) &&