Change sprintf to snprint in racal

https://github.com/Hamlib/Hamlib/issues/857
pull/928/head
Mike Black W9MDB 2022-01-11 16:34:29 -06:00
rodzic 20882cb18f
commit f463eef2cf
2 zmienionych plików z 43 dodań i 49 usunięć

Wyświetl plik

@ -81,7 +81,6 @@ static int ra37xx_one_transaction(RIG *rig, const char *cmd, char *data,
struct rig_state *rs = &rig->state; struct rig_state *rs = &rig->state;
char cmdbuf[BUFSZ]; char cmdbuf[BUFSZ];
char respbuf[BUFSZ]; char respbuf[BUFSZ];
int cmd_len;
int retval; int retval;
int pkt_header_len; int pkt_header_len;
struct timeval tv; struct timeval tv;
@ -96,17 +95,17 @@ static int ra37xx_one_transaction(RIG *rig, const char *cmd, char *data,
if (priv->receiver_id != -1) if (priv->receiver_id != -1)
{ {
pkt_header_len = 2; pkt_header_len = 2;
cmd_len = sprintf(cmdbuf, SOM "%d%s" EOM, priv->receiver_id, cmd); SNPRINTF(cmdbuf, sizeof(cmdbuf), SOM "%d%s" EOM, priv->receiver_id, cmd);
} }
else else
{ {
pkt_header_len = 1; pkt_header_len = 1;
cmd_len = sprintf(cmdbuf, SOM "%s" EOM, cmd); SNPRINTF(cmdbuf, sizeof(cmdbuf), SOM "%s" EOM, cmd);
} }
rig_flush(&rs->rigport); rig_flush(&rs->rigport);
retval = write_block(&rs->rigport, (unsigned char *) cmdbuf, cmd_len); retval = write_block(&rs->rigport, (unsigned char *) cmdbuf, strlen(cmdbuf));
if (retval != RIG_OK) if (retval != RIG_OK)
{ {
@ -258,12 +257,10 @@ int ra37xx_cleanup(RIG *rig)
return RIG_OK; return RIG_OK;
} }
/* /*
* Assumes rig!=NULL, rig->state.priv!=NULL * Assumes rig!=NULL, rig->state.priv!=NULL
*/ */
int ra37xx_set_conf(RIG *rig, token_t token, const char *val) int ra37xx_set_conf2(RIG *rig, token_t token, const char *val, int val_len)
{ {
struct ra37xx_priv_data *priv = (struct ra37xx_priv_data *)rig->state.priv; struct ra37xx_priv_data *priv = (struct ra37xx_priv_data *)rig->state.priv;
int receiver_id; int receiver_id;
@ -288,19 +285,24 @@ int ra37xx_set_conf(RIG *rig, token_t token, const char *val)
return RIG_OK; return RIG_OK;
} }
int ra37xx_set_conf(RIG *rig, token_t token, const char *val)
{
return ra37xx_set_conf2(rig, token, val, 128);
}
/* /*
* assumes rig!=NULL, * assumes rig!=NULL,
* Assumes rig!=NULL, rig->state.priv!=NULL * Assumes rig!=NULL, rig->state.priv!=NULL
* and val points to a buffer big enough to hold the conf value. * and val points to a buffer big enough to hold the conf value.
*/ */
int ra37xx_get_conf(RIG *rig, token_t token, char *val) int ra37xx_get_conf2(RIG *rig, token_t token, char *val, int val_len)
{ {
struct ra37xx_priv_data *priv = (struct ra37xx_priv_data *)rig->state.priv; struct ra37xx_priv_data *priv = (struct ra37xx_priv_data *)rig->state.priv;
switch (token) switch (token)
{ {
case TOK_RIGID: case TOK_RIGID:
sprintf(val, "%d", priv->receiver_id); SNPRINTF(val, val_len, "%d", priv->receiver_id);
break; break;
default: default:
@ -339,14 +341,8 @@ int ra37xx_close(RIG *rig)
int ra37xx_set_freq(RIG *rig, vfo_t vfo, freq_t freq) int ra37xx_set_freq(RIG *rig, vfo_t vfo, freq_t freq)
{ {
char freqbuf[BUFSZ]; char freqbuf[BUFSZ];
int freq_len;
freq_len = sprintf(freqbuf, "F%lu", (unsigned long)freq); SNPRINTF(freqbuf, sizeof(freqbuf), "F%lu", (unsigned long)freq);
if (freq_len < 0)
{
return -RIG_ETRUNC;
}
return ra37xx_transaction(rig, freqbuf, NULL, NULL); return ra37xx_transaction(rig, freqbuf, NULL, NULL);
} }
@ -417,9 +413,9 @@ int ra37xx_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
#endif #endif
#ifdef XXREMOVEDXX #ifdef XXREMOVEDXX
sprintf(buf, "M%d;B%d,%d", ra_mode, widthtype, widthnum); SNPRINTF(buf, sizeof(buf), "M%d;B%d,%d", ra_mode, widthtype, widthnum);
#else #else
sprintf(buf, "M%d", ra_mode); SNPRINTF(buf, sizeof(buf), "M%d", ra_mode);
#endif #endif
return ra37xx_transaction(rig, buf, NULL, NULL); return ra37xx_transaction(rig, buf, NULL, NULL);
@ -473,7 +469,7 @@ int ra37xx_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width)
/* FIXME */ /* FIXME */
widthnum = 0; widthnum = 0;
sprintf(buf, "QBCON%d,%d", widthtype, widthnum); SNPRINTF(buf, sizeof(buf), "QBCON%d,%d", widthtype, widthnum);
retval = ra37xx_transaction(rig, buf, resbuf, &len); retval = ra37xx_transaction(rig, buf, resbuf, &len);
if (retval != RIG_OK) if (retval != RIG_OK)
@ -494,7 +490,7 @@ int ra37xx_set_func(RIG *rig, vfo_t vfo, setting_t func, int status)
switch (func) switch (func)
{ {
case RIG_FUNC_MUTE: case RIG_FUNC_MUTE:
sprintf(cmdbuf, "MUTE%d", status ? 1 : 0); SNPRINTF(cmdbuf, sizeof(cmdbuf), "MUTE%d", status ? 1 : 0);
break; break;
default: default:
@ -546,23 +542,23 @@ int ra37xx_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
switch (level) switch (level)
{ {
case RIG_LEVEL_AF: case RIG_LEVEL_AF:
sprintf(cmdbuf, "AFL%d", (int)(val.f * 255)); SNPRINTF(cmdbuf, sizeof(cmdbuf), "AFL%d", (int)(val.f * 255));
break; break;
case RIG_LEVEL_PREAMP: case RIG_LEVEL_PREAMP:
sprintf(cmdbuf, "RFAMP%d", val.i ? 1 : 0); SNPRINTF(cmdbuf, sizeof(cmdbuf), "RFAMP%d", val.i ? 1 : 0);
break; break;
case RIG_LEVEL_CWPITCH: /* BFO */ case RIG_LEVEL_CWPITCH: /* BFO */
sprintf(cmdbuf, "BFO%d", val.i); SNPRINTF(cmdbuf, sizeof(cmdbuf), "BFO%d", val.i);
break; break;
case RIG_LEVEL_SQL: case RIG_LEVEL_SQL:
sprintf(cmdbuf, "CORL%d", (int)(val.f * 255)); SNPRINTF(cmdbuf, sizeof(cmdbuf), "CORL%d", (int)(val.f * 255));
break; break;
case RIG_LEVEL_RF: case RIG_LEVEL_RF:
sprintf(cmdbuf, "G%d", (int)(val.f * 255)); SNPRINTF(cmdbuf, sizeof(cmdbuf), "G%d", (int)(val.f * 255));
break; break;
case RIG_LEVEL_AGC: case RIG_LEVEL_AGC:
@ -579,7 +575,7 @@ int ra37xx_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
default: return -RIG_EINVAL; default: return -RIG_EINVAL;
} }
sprintf(cmdbuf, "AGC%d,%d", val.i == RIG_AGC_USER ? 1 : 0, agc); SNPRINTF(cmdbuf, sizeof(cmdbuf), "AGC%d,%d", val.i == RIG_AGC_USER ? 1 : 0, agc);
break; break;
default: default:
@ -748,7 +744,7 @@ int ra37xx_set_ant(RIG *rig, vfo_t vfo, ant_t ant, value_t option)
return -RIG_EINVAL; return -RIG_EINVAL;
} }
sprintf(buf, "ANT%d", i_ant); SNPRINTF(buf, sizeof(buf), "ANT%d", i_ant);
return ra37xx_transaction(rig, buf, NULL, NULL); return ra37xx_transaction(rig, buf, NULL, NULL);
} }
@ -787,7 +783,7 @@ int ra37xx_set_mem(RIG *rig, vfo_t vfo, int ch)
/* NB: does a RIG_OP_TO_VFO!*/ /* NB: does a RIG_OP_TO_VFO!*/
sprintf(buf, "CHAN%d", ch); SNPRINTF(buf, sizeof(buf), "CHAN%d", ch);
return ra37xx_transaction(rig, buf, NULL, NULL); return ra37xx_transaction(rig, buf, NULL, NULL);
} }
@ -827,7 +823,7 @@ int ra37xx_scan(RIG *rig, vfo_t vfo, scan_t scan, int ch)
return -RIG_EINVAL; return -RIG_EINVAL;
} }
sprintf(buf, "SCAN%d,0", scantype); SNPRINTF(buf, sizeof(buf), "SCAN%d,0", scantype);
return ra37xx_transaction(rig, buf, NULL, NULL); return ra37xx_transaction(rig, buf, NULL, NULL);
} }
@ -847,7 +843,7 @@ int ra37xx_vfo_op(RIG *rig, vfo_t vfo, vfo_op_t op)
return ret; return ret;
} }
sprintf(buf, "STRE%d", ch); SNPRINTF(buf, sizeof(buf), "STRE%d", ch);
return ra37xx_transaction(rig, buf, NULL, NULL); return ra37xx_transaction(rig, buf, NULL, NULL);
case RIG_OP_TO_VFO: case RIG_OP_TO_VFO:
@ -858,7 +854,7 @@ int ra37xx_vfo_op(RIG *rig, vfo_t vfo, vfo_op_t op)
return ret; return ret;
} }
sprintf(buf, "CHAN%d", ch); SNPRINTF(buf, sizeof(buf), "CHAN%d", ch);
return ra37xx_transaction(rig, buf, NULL, NULL); return ra37xx_transaction(rig, buf, NULL, NULL);
default: default:

Wyświetl plik

@ -79,14 +79,13 @@ static int racal_transaction(RIG *rig, const char *cmd, char *data,
struct racal_priv_data *priv = (struct racal_priv_data *)rig->state.priv; struct racal_priv_data *priv = (struct racal_priv_data *)rig->state.priv;
struct rig_state *rs = &rig->state; struct rig_state *rs = &rig->state;
char cmdbuf[BUFSZ + 1]; char cmdbuf[BUFSZ + 1];
int cmd_len;
int retval; int retval;
cmd_len = sprintf(cmdbuf, SOM "%u%s" EOM, priv->receiver_id, cmd); SNPRINTF(cmdbuf, sizeof(cmdbuf), SOM "%u%s" EOM, priv->receiver_id, cmd);
rig_flush(&rs->rigport); rig_flush(&rs->rigport);
retval = write_block(&rs->rigport, (unsigned char *) cmdbuf, cmd_len); retval = write_block(&rs->rigport, (unsigned char *) cmdbuf, strlen(cmdbuf));
if (retval != RIG_OK) if (retval != RIG_OK)
{ {
@ -192,14 +191,14 @@ int racal_set_conf(RIG *rig, token_t token, const char *val)
* Assumes rig!=NULL, rig->state.priv!=NULL * Assumes rig!=NULL, rig->state.priv!=NULL
* and val points to a buffer big enough to hold the conf value. * and val points to a buffer big enough to hold the conf value.
*/ */
int racal_get_conf(RIG *rig, token_t token, char *val) int racal_get_conf2(RIG *rig, token_t token, char *val, int val_len)
{ {
struct racal_priv_data *priv = (struct racal_priv_data *)rig->state.priv; struct racal_priv_data *priv = (struct racal_priv_data *)rig->state.priv;
switch (token) switch (token)
{ {
case TOK_RIGID: case TOK_RIGID:
sprintf(val, "%u", priv->receiver_id); SNPRINTF(val, val_len, "%u", priv->receiver_id);
break; break;
default: default:
@ -209,6 +208,11 @@ int racal_get_conf(RIG *rig, token_t token, char *val)
return RIG_OK; return RIG_OK;
} }
int racal_get_conf(RIG *rig, token_t token, char *val)
{
return racal_get_conf2(rig, token, val, 128);
}
/* /*
* racal_open * racal_open
* Assumes rig!=NULL * Assumes rig!=NULL
@ -242,14 +246,8 @@ int racal_close(RIG *rig)
int racal_set_freq(RIG *rig, vfo_t vfo, freq_t freq) int racal_set_freq(RIG *rig, vfo_t vfo, freq_t freq)
{ {
char freqbuf[BUFSZ]; char freqbuf[BUFSZ];
int freq_len;
freq_len = sprintf(freqbuf, "F%0g", (double)(freq / MHz(1))); SNPRINTF(freqbuf, sizeof(freqbuf), "F%0g", (double)(freq / MHz(1)));
if (freq_len < 0)
{
return -RIG_ETRUNC;
}
return racal_transaction(rig, freqbuf, NULL, NULL); return racal_transaction(rig, freqbuf, NULL, NULL);
} }
@ -315,11 +313,11 @@ int racal_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
width = rig_passband_normal(rig, mode); width = rig_passband_normal(rig, mode);
} }
sprintf(buf, "D%dI%.0f", ra_mode, (double)(width / kHz(1))); SNPRINTF(buf, sizeof(buf), "D%dI%.0f", ra_mode, (double)(width / kHz(1)));
} }
else else
{ {
sprintf(buf, "D%d", ra_mode); SNPRINTF(buf, sizeof(buf), "D%d", ra_mode);
} }
return racal_transaction(rig, buf, NULL, NULL); return racal_transaction(rig, buf, NULL, NULL);
@ -388,12 +386,12 @@ int racal_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
{ {
case RIG_LEVEL_RF: case RIG_LEVEL_RF:
/* Manually set threshold */ /* Manually set threshold */
sprintf(cmdbuf, "A%d", (int)(val.f * 120)); SNPRINTF(cmdbuf, sizeof(cmdbuf), "A%d", (int)(val.f * 120));
priv->threshold = val.f; priv->threshold = val.f;
break; break;
case RIG_LEVEL_IF: case RIG_LEVEL_IF:
sprintf(cmdbuf, "B%+0g", ((double)val.i) / kHz(1)); SNPRINTF(cmdbuf, sizeof(cmdbuf), "B%+0g", ((double)val.i) / kHz(1));
priv->bfo = val.i; priv->bfo = val.i;
break; break;
@ -416,7 +414,7 @@ int racal_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
agc += 4; /* with manually set threshold */ agc += 4; /* with manually set threshold */
} }
sprintf(cmdbuf, "M%d", agc); SNPRINTF(cmdbuf, sizeof(cmdbuf), "M%d", agc);
break; break;
default: default:
@ -564,7 +562,7 @@ const char *racal_get_info(RIG *rig)
strcpy(filterbuf, "IO error"); strcpy(filterbuf, "IO error");
} }
sprintf(infobuf, "BITE errors: %s, Filters: %s\n", SNPRINTF(infobuf, sizeof(infobuf), "BITE errors: %s, Filters: %s\n",
bitebuf + 1, filterbuf); bitebuf + 1, filterbuf);
return infobuf; return infobuf;