fixeria submitted this change.
Transceiver52M: check rc of osmo_trxc_msg_params_scan()
Change-Id: Ibb029e04816209423569037890fe85dcf174bd7b
Fixes: CID#564238
---
M Transceiver52M/Transceiver.cpp
1 file changed, 17 insertions(+), 10 deletions(-)
diff --git a/Transceiver52M/Transceiver.cpp b/Transceiver52M/Transceiver.cpp
index 865b122..fb2cdd9 100644
--- a/Transceiver52M/Transceiver.cpp
+++ b/Transceiver52M/Transceiver.cpp
@@ -1060,18 +1060,25 @@
} else if (!strcmp(cmd.cmd, "SETFORMAT")) {
// set TRXD protocol version
unsigned version_recv = 0;
- osmo_trxc_msg_params_scan(&cmd, "%u", &version_recv);
- LOGCHAN(chan, DTRXCTRL, INFO) << "BTS requests TRXD version switch: " << version_recv;
- if (version_recv > TRX_DATA_FORMAT_VER) {
- LOGCHAN(chan, DTRXCTRL, INFO) << "rejecting TRXD version " << version_recv
- << " in favor of " << TRX_DATA_FORMAT_VER;
- rsp.status = TRX_DATA_FORMAT_VER;
+ if (osmo_trxc_msg_params_scan(&cmd, "%u", &version_recv) != 1) {
+ LOGCHAN(chan, DTRXCTRL, NOTICE) << "bogus message on control interface";
+ /* Unlike other commands, SETFORMAT's status is not a generic ACK/NACK
+ * but the negotiated/preferred version; -1 is the reserved value for
+ * "no suitable version" / malformed request. */
+ rsp.status = -1;
} else {
- LOGCHAN(chan, DTRXCTRL, NOTICE) << "switching to TRXD version " << version_recv;
- mVersionTRXD[chan] = version_recv;
- rsp.status = version_recv;
+ LOGCHAN(chan, DTRXCTRL, INFO) << "BTS requests TRXD version switch: " << version_recv;
+ if (version_recv > TRX_DATA_FORMAT_VER) {
+ LOGCHAN(chan, DTRXCTRL, INFO) << "rejecting TRXD version " << version_recv
+ << " in favor of " << TRX_DATA_FORMAT_VER;
+ rsp.status = TRX_DATA_FORMAT_VER;
+ } else {
+ LOGCHAN(chan, DTRXCTRL, NOTICE) << "switching to TRXD version " << version_recv;
+ mVersionTRXD[chan] = version_recv;
+ rsp.status = version_recv;
+ }
+ snprintf(rsp.params, sizeof(rsp.params), "%u", version_recv);
}
- snprintf(rsp.params, sizeof(rsp.params), "%u", version_recv);
} else if (!strcmp(cmd.cmd, "RFMUTE")) {
// (Un)mute RF TX and RX
unsigned mute = 0;
To view, visit change 43682. To unsubscribe, or for help writing mail filters, visit settings.