fixeria submitted this change.

View Change

Approvals: fixeria: Looks good to me, approved Jenkins Builder: Verified
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.

Gerrit-MessageType: merged
Gerrit-Project: osmo-trx
Gerrit-Branch: master
Gerrit-Change-Id: Ibb029e04816209423569037890fe85dcf174bd7b
Gerrit-Change-Number: 43682
Gerrit-PatchSet: 2
Gerrit-Owner: fixeria <vyanitskiy@sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de>