pespin submitted this change.
transceiver: replace sprintf() with snprintf() in ctrl_sock_handle_rx
Change-Id: I7b725534c83a759e7b8f72f605dbcc38d778b1f2
---
M Transceiver52M/Transceiver.cpp
1 file changed, 30 insertions(+), 29 deletions(-)
diff --git a/Transceiver52M/Transceiver.cpp b/Transceiver52M/Transceiver.cpp
index fa66625..17bf148 100644
--- a/Transceiver52M/Transceiver.cpp
+++ b/Transceiver52M/Transceiver.cpp
@@ -900,6 +900,7 @@
ctrl_msg cmd_to_send;
char *buffer = cmd_received.data;
char *response = cmd_to_send.data;
+ const size_t response_size = sizeof(cmd_to_send.data);
const char *command, *params;
int msgLen;
ctrl_sock_state& s = mCtrlSockets[chan];
@@ -929,12 +930,12 @@
if (match_cmd(command, "POWEROFF", NULL)) {
stop();
- sprintf(response,"RSP POWEROFF 0");
+ snprintf(response, response_size, "RSP POWEROFF 0");
} else if (match_cmd(command, "POWERON", NULL)) {
if (!start()) {
- sprintf(response,"RSP POWERON 1");
+ snprintf(response, response_size, "RSP POWERON 1");
} else {
- sprintf(response,"RSP POWERON 0");
+ snprintf(response, response_size, "RSP POWERON 0");
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++)
mHandover[i][j] = false;
@@ -944,62 +945,62 @@
unsigned ts = 0, ss = 0;
sscanf(params, "%u %u", &ts, &ss);
if (ts > 7 || ss > 7) {
- sprintf(response, "RSP HANDOVER 1 %u %u", ts, ss);
+ snprintf(response, response_size, "RSP HANDOVER 1 %u %u", ts, ss);
} else {
mHandover[ts][ss] = true;
- sprintf(response, "RSP HANDOVER 0 %u %u", ts, ss);
+ snprintf(response, response_size, "RSP HANDOVER 0 %u %u", ts, ss);
}
} else if (match_cmd(command, "NOHANDOVER", ¶ms)) {
unsigned ts = 0, ss = 0;
sscanf(params, "%u %u", &ts, &ss);
if (ts > 7 || ss > 7) {
- sprintf(response, "RSP NOHANDOVER 1 %u %u", ts, ss);
+ snprintf(response, response_size, "RSP NOHANDOVER 1 %u %u", ts, ss);
} else {
mHandover[ts][ss] = false;
- sprintf(response, "RSP NOHANDOVER 0 %u %u", ts, ss);
+ snprintf(response, response_size, "RSP NOHANDOVER 0 %u %u", ts, ss);
}
} else if (match_cmd(command, "SETMAXDLY", ¶ms)) {
//set expected maximum time-of-arrival for Access Bursts
int maxDelay;
sscanf(params, "%d", &maxDelay);
mMaxExpectedDelayAB = maxDelay; // 1 GSM symbol is approx. 1 km
- sprintf(response,"RSP SETMAXDLY 0 %d",maxDelay);
+ snprintf(response, response_size, "RSP SETMAXDLY 0 %d", maxDelay);
} else if (match_cmd(command, "SETMAXDLYNB", ¶ms)) {
//set expected maximum time-of-arrival for Normal Bursts
int maxDelay;
sscanf(params, "%d", &maxDelay);
mMaxExpectedDelayNB = maxDelay; // 1 GSM symbol is approx. 1 km
- sprintf(response,"RSP SETMAXDLYNB 0 %d",maxDelay);
+ snprintf(response, response_size, "RSP SETMAXDLYNB 0 %d", maxDelay);
} else if (match_cmd(command, "SETRXGAIN", ¶ms)) {
int newGain;
sscanf(params, "%d", &newGain);
newGain = mRadioInterface->setRxGain(newGain, chan);
- sprintf(response,"RSP SETRXGAIN 0 %d",newGain);
+ snprintf(response, response_size, "RSP SETRXGAIN 0 %d", newGain);
} else if (match_cmd(command, "NOISELEV", NULL)) {
if (mOn) {
float lev = mStates[chan].mNoiseLev;
- sprintf(response,"RSP NOISELEV 0 %d",
+ snprintf(response, response_size, "RSP NOISELEV 0 %d",
(int) round(20.0 * log10(rxFullScale / lev)));
}
else {
- sprintf(response,"RSP NOISELEV 1 0");
+ snprintf(response, response_size, "RSP NOISELEV 1 0");
}
} else if (match_cmd(command, "SETPOWER", ¶ms)) {
int power;
sscanf(params, "%d", &power);
power = mRadioInterface->setPowerAttenuation(power, chan);
mStates[chan].mPower = power;
- sprintf(response, "RSP SETPOWER 0 %d", power);
+ snprintf(response, response_size, "RSP SETPOWER 0 %d", power);
} else if (match_cmd(command, "ADJPOWER", ¶ms)) {
int power, step;
sscanf(params, "%d", &step);
power = mStates[chan].mPower + step;
power = mRadioInterface->setPowerAttenuation(power, chan);
mStates[chan].mPower = power;
- sprintf(response, "RSP ADJPOWER 0 %d", power);
-} else if (match_cmd(command, "NOMTXPOWER", NULL)) {
+ snprintf(response, response_size, "RSP ADJPOWER 0 %d", power);
+ } else if (match_cmd(command, "NOMTXPOWER", NULL)) {
int power = mRadioInterface->getNominalTxPower(chan);
- sprintf(response, "RSP NOMTXPOWER 0 %d", power);
+ snprintf(response, response_size, "RSP NOMTXPOWER 0 %d", power);
} else if (match_cmd(command, "RXTUNE", ¶ms)) {
// tune receiver
int freqKhz;
@@ -1007,10 +1008,10 @@
mRxFreq = (freqKhz + cfg->freq_offset_khz) * 1e3;
if (!mRadioInterface->tuneRx(mRxFreq, chan)) {
LOGCHAN(chan, DTRXCTRL, FATAL) << "RX failed to tune";
- sprintf(response,"RSP RXTUNE 1 %d",freqKhz);
+ snprintf(response, response_size, "RSP RXTUNE 1 %d", freqKhz);
}
else
- sprintf(response,"RSP RXTUNE 0 %d",freqKhz);
+ snprintf(response, response_size, "RSP RXTUNE 0 %d", freqKhz);
} else if (match_cmd(command, "TXTUNE", ¶ms)) {
// tune txmtr
int freqKhz;
@@ -1018,20 +1019,20 @@
mTxFreq = (freqKhz + cfg->freq_offset_khz) * 1e3;
if (!mRadioInterface->tuneTx(mTxFreq, chan)) {
LOGCHAN(chan, DTRXCTRL, FATAL) << "TX failed to tune";
- sprintf(response,"RSP TXTUNE 1 %d",freqKhz);
+ snprintf(response, response_size, "RSP TXTUNE 1 %d", freqKhz);
}
else
- sprintf(response,"RSP TXTUNE 0 %d",freqKhz);
+ snprintf(response, response_size, "RSP TXTUNE 0 %d", freqKhz);
} else if (match_cmd(command, "SETTSC", ¶ms)) {
// set TSC
unsigned TSC;
sscanf(params, "%u", &TSC);
if (TSC > 7) {
- sprintf(response, "RSP SETTSC 1 %d", TSC);
+ snprintf(response, response_size, "RSP SETTSC 1 %d", TSC);
} else {
LOGC(DTRXCTRL, NOTICE) << "Changing TSC from " << mTSC << " to " << TSC;
mTSC = TSC;
- sprintf(response,"RSP SETTSC 0 %d", TSC);
+ snprintf(response, response_size, "RSP SETTSC 0 %d", TSC);
}
} else if (match_cmd(command, "SETSLOT", ¶ms)) {
// set slot type
@@ -1040,12 +1041,12 @@
sscanf(params, "%d %d", ×lot, &corrCode);
if ((timeslot < 0) || (timeslot > 7)) {
LOGCHAN(chan, DTRXCTRL, NOTICE) << "bogus message on control interface";
- sprintf(response,"RSP SETSLOT 1 %d %d",timeslot,corrCode);
+ snprintf(response, response_size, "RSP SETSLOT 1 %d %d", timeslot, corrCode);
return 0;
}
mStates[chan].chanType[timeslot] = (ChannelCombination) corrCode;
setModulus(timeslot, chan);
- sprintf(response,"RSP SETSLOT 0 %d %d",timeslot,corrCode);
+ snprintf(response, response_size, "RSP SETSLOT 0 %d %d", timeslot, corrCode);
} else if (match_cmd(command, "SETFORMAT", ¶ms)) {
// set TRXD protocol version
unsigned version_recv;
@@ -1054,28 +1055,28 @@
if (version_recv > TRX_DATA_FORMAT_VER) {
LOGCHAN(chan, DTRXCTRL, INFO) << "rejecting TRXD version " << version_recv
<< " in favor of " << TRX_DATA_FORMAT_VER;
- sprintf(response, "RSP SETFORMAT %u %u", TRX_DATA_FORMAT_VER, version_recv);
+ snprintf(response, response_size, "RSP SETFORMAT %u %u", TRX_DATA_FORMAT_VER, version_recv);
} else {
LOGCHAN(chan, DTRXCTRL, NOTICE) << "switching to TRXD version " << version_recv;
mVersionTRXD[chan] = version_recv;
- sprintf(response, "RSP SETFORMAT %u %u", version_recv, version_recv);
+ snprintf(response, response_size, "RSP SETFORMAT %u %u", version_recv, version_recv);
}
} else if (match_cmd(command, "RFMUTE", ¶ms)) {
// (Un)mute RF TX and RX
unsigned mute;
sscanf(params, "%u", &mute);
mStates[chan].mMuted = mute ? true : false;
- sprintf(response, "RSP RFMUTE 0 %u", mute);
+ snprintf(response, response_size, "RSP RFMUTE 0 %u", mute);
} else if (match_cmd(command, "_SETBURSTTODISKMASK", ¶ms)) {
// debug command! may change or disappear without notice
// set a mask which bursts to dump to disk
int mask;
sscanf(params, "%d", &mask);
mWriteBurstToDiskMask = mask;
- sprintf(response,"RSP _SETBURSTTODISKMASK 0 %d",mask);
+ snprintf(response, response_size, "RSP _SETBURSTTODISKMASK 0 %d", mask);
} else {
LOGCHAN(chan, DTRXCTRL, NOTICE) << "bogus command " << command << " on control interface.";
- sprintf(response,"RSP ERR 1");
+ snprintf(response, response_size, "RSP ERR 1");
}
LOGCHAN(chan, DTRXCTRL, INFO) << "response is '" << response << "'";
To view, visit change 42422. To unsubscribe, or for help writing mail filters, visit settings.