r3451 - trunk/src/target/gsm/src/gsmd
tick at sita.openmoko.org
tick at sita.openmoko.org
Tue Nov 20 10:10:11 CET 2007
Author: tick
Date: 2007-11-20 10:10:06 +0100 (Tue, 20 Nov 2007)
New Revision: 3451
Modified:
trunk/src/target/gsm/src/gsmd/vendor_ti.c
Log:
[gsmd] slightly changed the cpmb callback because rc could be used uninitialised, and avoids using strtok() on a constant string (Andrzej Zaborowski)
Modified: trunk/src/target/gsm/src/gsmd/vendor_ti.c
===================================================================
--- trunk/src/target/gsm/src/gsmd/vendor_ti.c 2007-11-20 06:19:55 UTC (rev 3450)
+++ trunk/src/target/gsm/src/gsmd/vendor_ti.c 2007-11-20 09:10:06 UTC (rev 3451)
@@ -41,35 +41,25 @@
static int csq_parse(char *buf, int len, const char *param,
struct gsmd *gsmd)
{
- char *tok;
struct gsmd_evt_auxdata *aux;
- struct gsmd_ucmd *ucmd = usock_build_event(GSMD_MSG_EVENT, GSMD_EVT_SIGNAL,
- sizeof(*aux));
+ struct gsmd_ucmd *ucmd = usock_build_event(GSMD_MSG_EVENT,
+ GSMD_EVT_SIGNAL, sizeof(*aux));
DEBUGP("entering csq_parse param=`%s'\n", param);
if (!ucmd)
return -EINVAL;
-
-
+
aux = (struct gsmd_evt_auxdata *) ucmd->buf;
- tok = strtok(param, ",");
- if (!tok)
+ if (sscanf(param, " %hhi, %hhi",
+ &aux->u.signal.sigq.rssi,
+ &aux->u.signal.sigq.ber) < 2)
goto out_free_io;
-
- aux->u.signal.sigq.rssi = atoi(tok);
- tok = strtok(NULL, ",");
- if (!tok)
- goto out_free_io;
-
- aux->u.signal.sigq.ber = atoi(tok);
-
usock_evt_send(gsmd, ucmd, GSMD_EVT_SIGNAL);
-
return 0;
out_free_io:
- free(ucmd);
+ talloc_free(ucmd);
return -EIO;
}
@@ -236,13 +226,14 @@
if (er->num_tokens == 5 &&
er->tokens[2].type == GSMD_ECMD_RTT_STRING &&
er->tokens[3].type == GSMD_ECMD_RTT_NUMERIC &&
- er->tokens[4].type == GSMD_ECMD_RTT_STRING)
- rc = sprintf(atcmd_buf, "AT+CSVM=1,\"%s\",%d",
- er->tokens[2].u.string, er->tokens[3].u.numeric);
+ er->tokens[4].type == GSMD_ECMD_RTT_STRING) {
+ snprintf(atcmd_buf, sizeof(atcmd_buf), "AT+CSVM=1,\"%s\",%d",
+ er->tokens[2].u.string, er->tokens[3].u.numeric);
+ rc = gsmd_simplecmd(g, atcmd_buf);
+ } else {
+ rc -EINVAL;
+ }
- if(rc)
- return gsmd_simplecmd(g, atcmd_buf);
-
talloc_free(er);
return rc;
More information about the commitlog
mailing list