summaryrefslogtreecommitdiffstats
path: root/src/gsm_04_08.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gsm_04_08.c')
-rw-r--r--src/gsm_04_08.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/gsm_04_08.c b/src/gsm_04_08.c
index 7e448dd68..83f38dd8b 100644
--- a/src/gsm_04_08.c
+++ b/src/gsm_04_08.c
@@ -593,6 +593,17 @@ static int mm_rx_loc_upd_req(struct msgb *msg)
DEBUGP(DMM, "LUPDREQ: mi_type=0x%02x MI(%s) type=%s\n", mi_type, mi_string,
lupd_name(lu->type));
+ /*
+ * Pseudo Spoof detection: Just drop a second/concurrent
+ * location updating request.
+ */
+ if (lchan->loc_operation) {
+ DEBUGP(DMM, "LUPDREQ: ignoring request due an existing one: %p.\n",
+ lchan->loc_operation);
+ gsm0408_loc_upd_rej(lchan, GSM48_REJECT_PROTOCOL_ERROR);
+ return 0;
+ }
+
allocate_loc_updating_req(lchan);
switch (mi_type) {