[MERGED] libosmocore[master]: tlv_parser: Report *first* occurrence of repeated IEs

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

Harald Welte gerrit-no-reply at lists.osmocom.org
Fri Feb 9 01:24:55 UTC 2018


Harald Welte has submitted this change and it was merged.

Change subject: tlv_parser: Report *first* occurrence of repeated IEs
......................................................................


tlv_parser: Report *first* occurrence of repeated IEs

Most GSM related specifications require the receiver to use the
*first* occurrence of repeated IEs.  The Osmocom TLV parser so
far did the opposite: It reported only the *last* occurrence in
case of repeated IEs.  Let's change our implementation to be
more in-line with relevant specs, such as 3GPP TS 24.008 8.6.3.

Change-Id: Icde09e075f68c842a7a96cf7160c8e44b77cf82d
---
M src/gsm/tlv_parser.c
1 file changed, 7 insertions(+), 2 deletions(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/src/gsm/tlv_parser.c b/src/gsm/tlv_parser.c
index 9b1fb17..b8c7149 100644
--- a/src/gsm/tlv_parser.c
+++ b/src/gsm/tlv_parser.c
@@ -276,8 +276,13 @@
 		                   &buf[ofs], buf_len-ofs);
 		if (rv < 0)
 			return rv;
-		dec->lv[tag].val = val;
-		dec->lv[tag].len = len;
+		/* Most GSM related protocols clearly indicate that in case of duplicate
+		 * IEs, only the first occurrence shall be used, while any further occurrences
+		 * shall be ignored.  See e.g. 3GPP TS 24.008 Section 8.6.3 */
+		if (dec->lv[tag].val == NULL) {
+			dec->lv[tag].val = val;
+			dec->lv[tag].len = len;
+		}
 		ofs += rv;
 		num_parsed++;
 	}

-- 
To view, visit https://gerrit.osmocom.org/6327
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Icde09e075f68c842a7a96cf7160c8e44b77cf82d
Gerrit-PatchSet: 1
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Owner: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Jenkins Builder



More information about the gerrit-log mailing list