bsc: Some S_LCHAN signals don't provide an lchan

Check the signal and only continue if it is any of the
signals we want to handle. In the case of measurement
reports we would cast some random code to a lchan.
diff --git a/openbsc/src/bsc_api.c b/openbsc/src/bsc_api.c
index 35babc3..8b3ff8f 100644
--- a/openbsc/src/bsc_api.c
+++ b/openbsc/src/bsc_api.c
@@ -606,6 +606,20 @@
 	if (subsys != SS_LCHAN)
 		return 0;
 
+	/*
+	 * Check if it is any of the signals we handle. We do want
+	 * to do this early as we will need to check the lchan and
+	 * the bsc api in it.
+	 */
+	switch (signal) {
+	case S_LCHAN_UNEXPECTED_RELEASE:
+	case S_LCHAN_ACTIVATE_ACK:
+	case S_LCHAN_ACTIVATE_NACK:
+		break;
+	default:
+		return -1;
+	}
+
 	lchan = (struct gsm_lchan *)signal_data;
 	if (!lchan || !lchan->conn)
 		return 0;