diff options
author | Harald Welte <laforge@osmocom.org> | 2021-01-02 20:46:51 +0100 |
---|---|---|
committer | Harald Welte <laforge@osmocom.org> | 2021-01-03 14:18:58 +0100 |
commit | 64b9407c4e3cefaeff2b76b8e4ce3f8d55b5986a (patch) | |
tree | 295ca604023b4f984ae61d65b44505970e5b605e | |
parent | 5a3eb5d99ae2dc65f17730d0e0264d7610a5efad (diff) |
cbsp: Fix encoding of "ETWS Warning Security Info" IE
This is a fixed-length Tag-Value IE. Our decoder already parsed
it correctly, but the encoder encoded it as TLV, which is wrong.
Change-Id: I7e1d7eab8b8e51acd9a24c38e2d3d30bbf00847a
-rw-r--r-- | src/gsm/cbsp.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/gsm/cbsp.c b/src/gsm/cbsp.c index b89358d4..6ddef33f 100644 --- a/src/gsm/cbsp.c +++ b/src/gsm/cbsp.c @@ -177,12 +177,15 @@ static int cbsp_enc_write_repl(struct msgb *msg, const struct osmo_cbsp_write_re } } else { int wperiod = encode_wperiod(in->u.emergency.warning_period); + uint8_t *cur; if (wperiod < 0) return -EINVAL; msgb_tv_put(msg, CBSP_IEI_EMERG_IND, in->u.emergency.indicator); msgb_tv16_put(msg, CBSP_IEI_WARN_TYPE, in->u.emergency.warning_type); - msgb_tlv_put(msg, CBSP_IEI_WARN_SEC_INFO, sizeof(in->u.emergency.warning_sec_info), - in->u.emergency.warning_sec_info); + /* Tag + fixed length value! */ + msgb_put_u8(msg, CBSP_IEI_WARN_SEC_INFO); + cur = msgb_put(msg, sizeof(in->u.emergency.warning_sec_info)); + memcpy(cur, in->u.emergency.warning_sec_info, sizeof(in->u.emergency.warning_sec_info)); msgb_tv_put(msg, CBSP_IEI_WARNING_PERIOD, wperiod); } return 0; |