aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc
diff options
context:
space:
mode:
authorIvan Kluchnikov <kluchnikovi@gmail.com>2015-12-29 19:00:28 +0300
committerIvan Kluchnikov <kluchnikovi@gmail.com>2017-02-07 18:59:55 +0300
commite7dc282b51acb0100769bbe9df38f40361d60536 (patch)
tree8f0066d39985e56a3e622483f14c19c9b93f51e5 /openbsc
parent45fdb6a728841046c283877db8698763bdc63ad1 (diff)
sup: Fix RP header offset and RP data length calculations
Diffstat (limited to 'openbsc')
-rw-r--r--openbsc/src/libmsc/gsm_sup.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/openbsc/src/libmsc/gsm_sup.c b/openbsc/src/libmsc/gsm_sup.c
index 2e0fe7201..304e225a2 100644
--- a/openbsc/src/libmsc/gsm_sup.c
+++ b/openbsc/src/libmsc/gsm_sup.c
@@ -209,10 +209,10 @@ static int rx_sms_message(const uint8_t* data, size_t data_len)
char extension[15];
uint8_t *value;
size_t value_len;
- int offset = 0;
+ int offset = 1;
uint8_t *rp_hdr = (uint8_t*)data + offset;
+ data_len -= 1;
- offset++;
rc = gprs_match_tlv(&rp_hdr, &data_len, 0x82, &value, &value_len);
if (rc <= 0)
@@ -232,8 +232,8 @@ static int rx_sms_message(const uint8_t* data, size_t data_len)
struct msgb *msg = gsm411_msgb_alloc();
uint8_t *rp_msg;
- rp_msg = (uint8_t *)msgb_put(msg, data_len - offset);
- memcpy(rp_msg, data + offset, data_len - offset);
+ rp_msg = (uint8_t *)msgb_put(msg, data_len);
+ memcpy(rp_msg, data + offset, data_len);
struct gsm_subscriber *subscr;
subscr = subscr_get_by_extension(NULL, extension);