aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--addons/app_mysql.c6
-rw-r--r--addons/app_saycountpl.c2
-rw-r--r--addons/cdr_mysql.c2
-rw-r--r--addons/chan_ooh323.c4
-rw-r--r--addons/res_config_mysql.c2
-rw-r--r--agi/eagi-sphinx-test.c2
-rw-r--r--agi/eagi-test.c2
-rw-r--r--apps/app_adsiprog.c6
-rw-r--r--apps/app_alarmreceiver.c2
-rw-r--r--apps/app_chanspy.c4
-rw-r--r--apps/app_dahdibarge.c6
-rw-r--r--apps/app_disa.c4
-rw-r--r--apps/app_followme.c4
-rw-r--r--apps/app_macro.c8
-rw-r--r--apps/app_meetme.c30
-rw-r--r--apps/app_minivm.c8
-rw-r--r--apps/app_mixmonitor.c6
-rw-r--r--apps/app_morsecode.c4
-rw-r--r--apps/app_originate.c2
-rw-r--r--apps/app_osplookup.c34
-rw-r--r--apps/app_privacy.c4
-rw-r--r--apps/app_queue.c12
-rw-r--r--apps/app_readfile.c2
-rw-r--r--apps/app_record.c4
-rw-r--r--apps/app_rpt.c32
-rw-r--r--apps/app_setcallerid.c2
-rw-r--r--apps/app_sms.c2
-rw-r--r--apps/app_stack.c2
-rw-r--r--apps/app_talkdetect.c8
-rw-r--r--apps/app_verbose.c2
-rw-r--r--apps/app_voicemail.c46
-rw-r--r--apps/app_waitforring.c2
-rw-r--r--apps/app_waitforsilence.c6
-rw-r--r--apps/app_waituntil.c2
-rw-r--r--cdr/cdr_adaptive_odbc.c20
-rw-r--r--cdr/cdr_pgsql.c6
-rw-r--r--cel/cel_adaptive_odbc.c20
-rw-r--r--cel/cel_pgsql.c6
-rw-r--r--channels/chan_agent.c8
-rw-r--r--channels/chan_dahdi.c40
-rw-r--r--channels/chan_iax2.c8
-rw-r--r--channels/chan_mgcp.c14
-rw-r--r--channels/chan_misdn.c2
-rw-r--r--channels/chan_oss.c2
-rw-r--r--channels/chan_phone.c2
-rw-r--r--channels/chan_sip.c144
-rw-r--r--channels/chan_skinny.c4
-rw-r--r--channels/chan_usbradio.c32
-rw-r--r--channels/iax2-provision.c4
-rw-r--r--channels/misdn_config.c10
-rw-r--r--channels/sig_pri.c8
-rwxr-xr-xchannels/xpmr/xpmr.c6
-rw-r--r--codecs/codec_speex.c8
-rw-r--r--doc/CODING-GUIDELINES11
-rw-r--r--funcs/func_channel.c6
-rw-r--r--funcs/func_cut.c10
-rw-r--r--funcs/func_dialplan.c2
-rw-r--r--funcs/func_enum.c2
-rw-r--r--funcs/func_math.c6
-rw-r--r--funcs/func_odbc.c2
-rw-r--r--funcs/func_rand.c4
-rw-r--r--funcs/func_speex.c2
-rw-r--r--funcs/func_sprintf.c4
-rw-r--r--funcs/func_timeout.c2
-rw-r--r--main/acl.c6
-rw-r--r--main/asterisk.c24
-rw-r--r--main/cdr.c4
-rw-r--r--main/channel.c4
-rw-r--r--main/cli.c2
-rw-r--r--main/config.c2
-rw-r--r--main/dnsmgr.c2
-rw-r--r--main/dsp.c2
-rw-r--r--main/enum.c2
-rw-r--r--main/features.c26
-rw-r--r--main/frame.c2
-rw-r--r--main/http.c2
-rw-r--r--main/indications.c24
-rw-r--r--main/manager.c14
-rw-r--r--main/netsock.c2
-rw-r--r--main/pbx.c16
-rw-r--r--main/timing.c2
-rw-r--r--main/utils.c6
-rw-r--r--pbx/pbx_config.c8
-rw-r--r--pbx/pbx_dundi.c18
-rw-r--r--pbx/pbx_loopback.c2
-rw-r--r--pbx/pbx_spool.c10
-rw-r--r--res/ael/pval.c8
-rw-r--r--res/res_agi.c24
-rw-r--r--res/res_config_curl.c8
-rw-r--r--res/res_config_ldap.c4
-rw-r--r--res/res_config_pgsql.c4
-rw-r--r--res/res_config_sqlite.c2
-rw-r--r--res/res_http_post.c4
-rw-r--r--res/res_limit.c2
-rw-r--r--res/res_musiconhold.c2
-rw-r--r--res/res_odbc.c4
-rw-r--r--res/res_smdi.c8
-rw-r--r--res/snmp/agent.c2
-rw-r--r--utils/extconf.c12
-rw-r--r--utils/frame.c12
-rw-r--r--utils/muted.c4
101 files changed, 484 insertions, 455 deletions
diff --git a/addons/app_mysql.c b/addons/app_mysql.c
index 3bc027b5e..0b1b58f04 100644
--- a/addons/app_mysql.c
+++ b/addons/app_mysql.c
@@ -333,7 +333,7 @@ static int aMYSQL_connect(struct ast_channel *chan, char *data)
}
ctimeout = pbx_builtin_getvar_helper(chan, "MYSQL_TIMEOUT");
- if (ctimeout && sscanf(ctimeout, "%d", &timeout) == 1) {
+ if (ctimeout && sscanf(ctimeout, "%30d", &timeout) == 1) {
mysql_options(mysql, MYSQL_OPT_CONNECT_TIMEOUT, (void *)&timeout);
}
@@ -408,7 +408,7 @@ static int aMYSQL_nextresult(struct ast_channel *chan, char *data)
int connid = -1;
AST_NONSTANDARD_APP_ARGS(args, data, ' ');
- sscanf(args.connid, "%d", &connid);
+ sscanf(args.connid, "%30d", &connid);
if (args.argc != 3 || connid <= 0) {
ast_log(LOG_WARNING, "missing some arguments\n");
@@ -451,7 +451,7 @@ static int aMYSQL_fetch(struct ast_channel *chan, char *data)
parse = ast_strdupa(data);
AST_NONSTANDARD_APP_ARGS(args, parse, ' ');
- sscanf(args.fetchid, "%d", &resultid);
+ sscanf(args.fetchid, "%30d", &resultid);
if (args.resultvar && (resultid >= 0) ) {
if ((mysqlres = find_identifier(resultid, AST_MYSQL_ID_RESID)) != NULL) {
diff --git a/addons/app_saycountpl.c b/addons/app_saycountpl.c
index fd921de1a..915779899 100644
--- a/addons/app_saycountpl.c
+++ b/addons/app_saycountpl.c
@@ -107,7 +107,7 @@ static int sayword_exec(struct ast_channel *chan, const char *data)
return -1;
}
- if (sscanf(args.num, "%d", &inum) != 1) {
+ if (sscanf(args.num, "%30d", &inum) != 1) {
ast_log(LOG_WARNING, "'%s' is not a valid number\n", args.num);
return -1;
}
diff --git a/addons/cdr_mysql.c b/addons/cdr_mysql.c
index 2a3ef4365..a6d37b31d 100644
--- a/addons/cdr_mysql.c
+++ b/addons/cdr_mysql.c
@@ -383,7 +383,7 @@ static int my_load_config_number(struct ast_config *cfg, const char *category, c
tmp = ast_variable_retrieve(cfg, category, variable);
- if (!tmp || sscanf(tmp, "%d", field) < 1)
+ if (!tmp || sscanf(tmp, "%30d", field) < 1)
*field = def;
return 0;
diff --git a/addons/chan_ooh323.c b/addons/chan_ooh323.c
index 5dd0cadc8..4aa26c92e 100644
--- a/addons/chan_ooh323.c
+++ b/addons/chan_ooh323.c
@@ -424,7 +424,7 @@ static struct ooh323_pvt *ooh323_alloc(int callref, char *callToken)
/*
Possible data values - peername, exten/peername, exten@ip
*/
-static struct ast_channel *ooh323_request(const char *type, int format,
+static struct ast_channel *ooh323_request(const char *type, int format, const struct ast_channel *requestor,
void *data, int *cause)
{
struct ast_channel *chan = NULL;
@@ -1886,7 +1886,7 @@ int reload_config(int reload)
if (gRTPTimeout <= 0)
gRTPTimeout = 60;
} else if (!strcasecmp(v->name, "tos")) {
- if (sscanf(v->value, "%i", &format) == 1)
+ if (sscanf(v->value, "%30i", &format) == 1)
gTOS = format & 0xff;
else if (!strcasecmp(v->value, "lowdelay"))
gTOS = IPTOS_LOWDELAY;
diff --git a/addons/res_config_mysql.c b/addons/res_config_mysql.c
index 462f45aaa..182b9ec27 100644
--- a/addons/res_config_mysql.c
+++ b/addons/res_config_mysql.c
@@ -245,7 +245,7 @@ static struct tables *find_table(const char *database, const char *tablename)
}
if ((flen = strchr(ftype, '('))) {
- sscanf(flen, "(%d)", &column->len);
+ sscanf(flen, "(%30d)", &column->len);
} else {
/* Columns like dates, times, and timestamps don't have a length */
column->len = -1;
diff --git a/agi/eagi-sphinx-test.c b/agi/eagi-sphinx-test.c
index 4d13db507..359360286 100644
--- a/agi/eagi-sphinx-test.c
+++ b/agi/eagi-sphinx-test.c
@@ -223,7 +223,7 @@ int main(int argc, char *argv[])
connect_sphinx();
tmp = getenv("agi_enhanced");
if (tmp) {
- if (sscanf(tmp, "%d.%d", &ver, &subver) != 2)
+ if (sscanf(tmp, "%30d.%30d", &ver, &subver) != 2)
ver = 0;
}
if (ver < 1) {
diff --git a/agi/eagi-test.c b/agi/eagi-test.c
index c40b85d1e..dc2d7fa1a 100644
--- a/agi/eagi-test.c
+++ b/agi/eagi-test.c
@@ -156,7 +156,7 @@ int main(int argc, char *argv[])
}
tmp = getenv("agi_enhanced");
if (tmp) {
- if (sscanf(tmp, "%d.%d", &ver, &subver) != 2)
+ if (sscanf(tmp, "%30d.%30d", &ver, &subver) != 2)
ver = 0;
}
if (ver < 1) {
diff --git a/apps/app_adsiprog.c b/apps/app_adsiprog.c
index ae302a1e3..8af1473d1 100644
--- a/apps/app_adsiprog.c
+++ b/apps/app_adsiprog.c
@@ -201,7 +201,7 @@ static int process_token(void *out, char *src, int maxlen, int argtype)
if (!(argtype & ARG_NUMBER))
return -1;
/* Octal value */
- if (sscanf(src, "%o", (int *)out) != 1)
+ if (sscanf(src, "%30o", (int *)out) != 1)
return -1;
if (argtype & ARG_STRING) {
/* Convert */
@@ -211,7 +211,7 @@ static int process_token(void *out, char *src, int maxlen, int argtype)
if (!(argtype & ARG_NUMBER))
return -1;
/* Hex value */
- if (sscanf(src + 2, "%x", (unsigned int *)out) != 1)
+ if (sscanf(src + 2, "%30x", (unsigned int *)out) != 1)
return -1;
if (argtype & ARG_STRING) {
/* Convert */
@@ -221,7 +221,7 @@ static int process_token(void *out, char *src, int maxlen, int argtype)
if (!(argtype & ARG_NUMBER))
return -1;
/* Hex value */
- if (sscanf(src, "%d", (int *)out) != 1)
+ if (sscanf(src, "%30d", (int *)out) != 1)
return -1;
if (argtype & ARG_STRING) {
/* Convert */
diff --git a/apps/app_alarmreceiver.c b/apps/app_alarmreceiver.c
index 47e894b1e..6589ec36d 100644
--- a/apps/app_alarmreceiver.c
+++ b/apps/app_alarmreceiver.c
@@ -124,7 +124,7 @@ static void database_increment( char *key )
return;
}
- sscanf(value, "%u", &v);
+ sscanf(value, "%30u", &v);
v++;
ast_verb(4, "AlarmReceiver: New value for %s: %u\n", key, v);
diff --git a/apps/app_chanspy.c b/apps/app_chanspy.c
index 876994b4e..6664207e5 100644
--- a/apps/app_chanspy.c
+++ b/apps/app_chanspy.c
@@ -1037,7 +1037,7 @@ static int chanspy_exec(struct ast_channel *chan, const char *data)
if (ast_test_flag(&flags, OPTION_VOLUME) && opts[OPT_ARG_VOLUME]) {
int vol;
- if ((sscanf(opts[OPT_ARG_VOLUME], "%d", &vol) != 1) || (vol > 4) || (vol < -4))
+ if ((sscanf(opts[OPT_ARG_VOLUME], "%30d", &vol) != 1) || (vol > 4) || (vol < -4))
ast_log(LOG_NOTICE, "Volume factor must be a number between -4 and 4\n");
else
volfactor = vol;
@@ -1158,7 +1158,7 @@ static int extenspy_exec(struct ast_channel *chan, const char *data)
if (ast_test_flag(&flags, OPTION_VOLUME) && opts[OPT_ARG_VOLUME]) {
int vol;
- if ((sscanf(opts[OPT_ARG_VOLUME], "%d", &vol) != 1) || (vol > 4) || (vol < -4))
+ if ((sscanf(opts[OPT_ARG_VOLUME], "%30d", &vol) != 1) || (vol > 4) || (vol < -4))
ast_log(LOG_NOTICE, "Volume factor must be a number between -4 and 4\n");
else
volfactor = vol;
diff --git a/apps/app_dahdibarge.c b/apps/app_dahdibarge.c
index 7034af0d1..424ba3609 100644
--- a/apps/app_dahdibarge.c
+++ b/apps/app_dahdibarge.c
@@ -267,8 +267,8 @@ static int conf_exec(struct ast_channel *chan, const char *data)
char confnostr[80] = "";
if (!ast_strlen_zero(data)) {
- if ((sscanf(data, "DAHDI/%d", &confno) != 1) &&
- (sscanf(data, "%d", &confno) != 1)) {
+ if ((sscanf(data, "DAHDI/%30d", &confno) != 1) &&
+ (sscanf(data, "%30d", &confno) != 1)) {
ast_log(LOG_WARNING, "DAHDIBarge Argument (if specified) must be a channel number, not '%s'\n", (char *)data);
return 0;
}
@@ -282,7 +282,7 @@ static int conf_exec(struct ast_channel *chan, const char *data)
confnostr[0] = '\0';
res = ast_app_getdata(chan, "conf-getchannel",confnostr, sizeof(confnostr) - 1, 0);
if (res <0) goto out;
- if (sscanf(confnostr, "%d", &confno) != 1)
+ if (sscanf(confnostr, "%30d", &confno) != 1)
confno = 0;
}
if (confno) {
diff --git a/apps/app_disa.c b/apps/app_disa.c
index b86b8f634..fa94238bc 100644
--- a/apps/app_disa.c
+++ b/apps/app_disa.c
@@ -250,7 +250,7 @@ static int disa_exec(struct ast_channel *chan, const char *data)
if (!(k&1)) { /* if in password state */
if (j == '#') { /* end of password */
/* see if this is an integer */
- if (sscanf(args.passcode,"%d",&j) < 1) { /* nope, it must be a filename */
+ if (sscanf(args.passcode,"%30d",&j) < 1) { /* nope, it must be a filename */
fp = fopen(args.passcode,"r");
if (!fp) {
ast_log(LOG_WARNING,"DISA password file %s not found on chan %s\n",args.passcode,chan->name);
@@ -276,7 +276,7 @@ static int disa_exec(struct ast_channel *chan, const char *data)
ast_debug(1, "Mailbox: %s\n",args.mailbox);
/* password must be in valid format (numeric) */
- if (sscanf(args.passcode,"%d", &j) < 1)
+ if (sscanf(args.passcode,"%30d", &j) < 1)
continue;
/* if we got it */
if (!strcmp(exten,args.passcode)) {
diff --git a/apps/app_followme.c b/apps/app_followme.c
index 67648331b..d460f75af 100644
--- a/apps/app_followme.c
+++ b/apps/app_followme.c
@@ -334,7 +334,7 @@ static int reload_followme(int reload)
featuredigittostr = ast_variable_retrieve(cfg, "general", "featuredigittimeout");
if (!ast_strlen_zero(featuredigittostr)) {
- if (!sscanf(featuredigittostr, "%d", &featuredigittimeout))
+ if (!sscanf(featuredigittostr, "%30d", &featuredigittimeout))
featuredigittimeout = 5000;
}
@@ -956,7 +956,7 @@ static struct call_followme *find_realtime(const char *name)
if (!(numstr = ast_variable_retrieve(cfg, catg, "phonenumber"))) {
continue;
}
- if (!(timeoutstr = ast_variable_retrieve(cfg, catg, "timeout")) || sscanf(timeoutstr, "%d", &timeout) != 1 || timeout < 1) {
+ if (!(timeoutstr = ast_variable_retrieve(cfg, catg, "timeout")) || sscanf(timeoutstr, "%30d", &timeout) != 1 || timeout < 1) {
timeout = 25;
}
/* This one has to exist; it was part of the query */
diff --git a/apps/app_macro.c b/apps/app_macro.c
index e48d3c361..f3ff81db5 100644
--- a/apps/app_macro.c
+++ b/apps/app_macro.c
@@ -266,12 +266,12 @@ static int _macro_exec(struct ast_channel *chan, const char *data, int exclusive
/* does the user want a deeper rabbit hole? */
ast_channel_lock(chan);
if ((s = pbx_builtin_getvar_helper(chan, "MACRO_RECURSION"))) {
- sscanf(s, "%d", &maxdepth);
+ sscanf(s, "%30d", &maxdepth);
}
/* Count how many levels deep the rabbit hole goes */
if ((s = pbx_builtin_getvar_helper(chan, "MACRO_DEPTH"))) {
- sscanf(s, "%d", &depth);
+ sscanf(s, "%30d", &depth);
}
/* Used for detecting whether to return when a Macro is called from another Macro after hangup */
@@ -279,7 +279,7 @@ static int _macro_exec(struct ast_channel *chan, const char *data, int exclusive
pbx_builtin_setvar_helper(chan, "MACRO_IN_HANGUP", "1");
if ((inhangupc = pbx_builtin_getvar_helper(chan, "MACRO_IN_HANGUP"))) {
- sscanf(inhangupc, "%d", &inhangup);
+ sscanf(inhangupc, "%30d", &inhangup);
}
ast_channel_unlock(chan);
@@ -543,7 +543,7 @@ static int _macro_exec(struct ast_channel *chan, const char *data, int exclusive
if ((offsets = pbx_builtin_getvar_helper(chan, "MACRO_OFFSET"))) {
/* Handle macro offset if it's set by checking the availability of step n + offset + 1, otherwise continue
normally if there is any problem */
- if (sscanf(offsets, "%d", &offset) == 1) {
+ if (sscanf(offsets, "%30d", &offset) == 1) {
if (ast_exists_extension(chan, chan->context, chan->exten, chan->priority + offset + 1, chan->cid.cid_num)) {
chan->priority += offset;
}
diff --git a/apps/app_meetme.c b/apps/app_meetme.c
index 85f4a59e8..345116397 100644
--- a/apps/app_meetme.c
+++ b/apps/app_meetme.c
@@ -1206,7 +1206,7 @@ static struct ast_conference *build_conf(const char *confno, const char *pin,
AST_LIST_INSERT_HEAD(&confs, cnf, list);
/* Reserve conference number in map */
- if ((sscanf(cnf->confno, "%d", &confno_int) == 1) && (confno_int >= 0 && confno_int < 1024))
+ if ((sscanf(cnf->confno, "%30d", &confno_int) == 1) && (confno_int >= 0 && confno_int < 1024))
conf_map[confno_int] = 1;
cnfout:
@@ -1874,7 +1874,7 @@ static int dispose_conf(struct ast_conference *conf)
AST_LIST_LOCK(&confs);
if (ast_atomic_dec_and_test(&conf->refcount)) {
/* Take the conference room number out of an inuse state */
- if ((sscanf(conf->confno, "%d", &confno_int) == 1) && (confno_int >= 0 && confno_int < 1024)) {
+ if ((sscanf(conf->confno, "%4d", &confno_int) == 1) && (confno_int >= 0 && confno_int < 1024)) {
conf_map[confno_int] = 0;
}
conf_free(conf);
@@ -2101,7 +2101,7 @@ static int conf_run(struct ast_channel *chan, struct ast_conference *conf, int c
/* Possible timeout waiting for marked user */
if ((confflags & CONFFLAG_WAITMARKED) &&
!ast_strlen_zero(optargs[OPT_ARG_WAITMARKED]) &&
- (sscanf(optargs[OPT_ARG_WAITMARKED], "%d", &opt_waitmarked_timeout) == 1) &&
+ (sscanf(optargs[OPT_ARG_WAITMARKED], "%30d", &opt_waitmarked_timeout) == 1) &&
(opt_waitmarked_timeout > 0)) {
timeout = time(NULL) + opt_waitmarked_timeout;
}
@@ -3857,7 +3857,7 @@ static int conf_exec(struct ast_channel *chan, const char *data)
if (!res)
ast_waitstream(chan, "");
} else {
- if (sscanf(confno, "%d", &confno_int) == 1) {
+ if (sscanf(confno, "%30d", &confno_int) == 1) {
if (!ast_test_flag(&confflags, CONFFLAG_QUIET)) {
res = ast_streamfile(chan, "conf-enteringno", chan->language);
if (!res) {
@@ -3994,7 +3994,7 @@ static struct ast_conf_user *find_user(struct ast_conference *conf, const char *
struct ast_conf_user *user = NULL;
int cid;
- sscanf(callerident, "%i", &cid);
+ sscanf(callerident, "%30i", &cid);
if (conf && callerident) {
AST_LIST_TRAVERSE(&conf->userlist, user, list) {
if (cid == user->user_no)
@@ -4501,7 +4501,7 @@ static void load_config_meetme(void)
rt_log_members = 1;
if ((val = ast_variable_retrieve(cfg, "general", "audiobuffers"))) {
- if ((sscanf(val, "%d", &audio_buffers) != 1)) {
+ if ((sscanf(val, "%30d", &audio_buffers) != 1)) {
ast_log(LOG_WARNING, "audiobuffers setting must be a number, not '%s'\n", val);
audio_buffers = DEFAULT_AUDIO_BUFFERS;
} else if ((audio_buffers < DAHDI_DEFAULT_NUM_BUFS) || (audio_buffers > DAHDI_MAX_NUM_BUFS)) {
@@ -4518,25 +4518,25 @@ static void load_config_meetme(void)
if ((val = ast_variable_retrieve(cfg, "general", "logmembercount")))
rt_log_members = ast_true(val);
if ((val = ast_variable_retrieve(cfg, "general", "fuzzystart"))) {
- if ((sscanf(val, "%d", &fuzzystart) != 1)) {
+ if ((sscanf(val, "%30d", &fuzzystart) != 1)) {
ast_log(LOG_WARNING, "fuzzystart must be a number, not '%s'\n", val);
fuzzystart = 0;
}
}
if ((val = ast_variable_retrieve(cfg, "general", "earlyalert"))) {
- if ((sscanf(val, "%d", &earlyalert) != 1)) {
+ if ((sscanf(val, "%30d", &earlyalert) != 1)) {
ast_log(LOG_WARNING, "earlyalert must be a number, not '%s'\n", val);
earlyalert = 0;
}
}
if ((val = ast_variable_retrieve(cfg, "general", "endalert"))) {
- if ((sscanf(val, "%d", &endalert) != 1)) {
+ if ((sscanf(val, "%30d", &endalert) != 1)) {
ast_log(LOG_WARNING, "endalert must be a number, not '%s'\n", val);
endalert = 0;
}
}
if ((val = ast_variable_retrieve(cfg, "general", "extendby"))) {
- if ((sscanf(val, "%d", &extendby) != 1)) {
+ if ((sscanf(val, "%30d", &extendby) != 1)) {
ast_log(LOG_WARNING, "extendby must be a number, not '%s'\n", val);
extendby = 0;
}
@@ -6102,7 +6102,7 @@ static int sla_build_trunk(struct ast_config *cfg, const char *cat)
if (!strcasecmp(var->name, "autocontext"))
ast_string_field_set(trunk, autocontext, var->value);
else if (!strcasecmp(var->name, "ringtimeout")) {
- if (sscanf(var->value, "%u", &trunk->ring_timeout) != 1) {
+ if (sscanf(var->value, "%30u", &trunk->ring_timeout) != 1) {
ast_log(LOG_WARNING, "Invalid ringtimeout '%s' specified for trunk '%s'\n",
var->value, trunk->name);
trunk->ring_timeout = 0;
@@ -6178,13 +6178,13 @@ static void sla_add_trunk_to_station(struct sla_station *station, struct ast_var
char *name, *value = cur;
name = strsep(&value, "=");
if (!strcasecmp(name, "ringtimeout")) {
- if (sscanf(value, "%u", &trunk_ref->ring_timeout) != 1) {
+ if (sscanf(value, "%30u", &trunk_ref->ring_timeout) != 1) {
ast_log(LOG_WARNING, "Invalid ringtimeout value '%s' for "
"trunk '%s' on station '%s'\n", value, trunk->name, station->name);
trunk_ref->ring_timeout = 0;
}
} else if (!strcasecmp(name, "ringdelay")) {
- if (sscanf(value, "%u", &trunk_ref->ring_delay) != 1) {
+ if (sscanf(value, "%30u", &trunk_ref->ring_delay) != 1) {
ast_log(LOG_WARNING, "Invalid ringdelay value '%s' for "
"trunk '%s' on station '%s'\n", value, trunk->name, station->name);
trunk_ref->ring_delay = 0;
@@ -6233,13 +6233,13 @@ static int sla_build_station(struct ast_config *cfg, const char *cat)
else if (!strcasecmp(var->name, "autocontext"))
ast_string_field_set(station, autocontext, var->value);
else if (!strcasecmp(var->name, "ringtimeout")) {
- if (sscanf(var->value, "%u", &station->ring_timeout) != 1) {
+ if (sscanf(var->value, "%30u", &station->ring_timeout) != 1) {
ast_log(LOG_WARNING, "Invalid ringtimeout '%s' specified for station '%s'\n",
var->value, station->name);
station->ring_timeout = 0;
}
} else if (!strcasecmp(var->name, "ringdelay")) {
- if (sscanf(var->value, "%u", &station->ring_delay) != 1) {
+ if (sscanf(var->value, "%30u", &station->ring_delay) != 1) {
ast_log(LOG_WARNING, "Invalid ringdelay '%s' specified for station '%s'\n",
var->value, station->name);
station->ring_delay = 0;
diff --git a/apps/app_minivm.c b/apps/app_minivm.c
index c4e786698..1e9999b4c 100644
--- a/apps/app_minivm.c
+++ b/apps/app_minivm.c
@@ -2169,7 +2169,7 @@ static int minivm_record_exec(struct ast_channel *chan, const char *data)
if (ast_test_flag(&flags, OPT_RECORDGAIN)) {
int gain;
- if (sscanf(opts[OPT_ARG_RECORDGAIN], "%d", &gain) != 1) {
+ if (sscanf(opts[OPT_ARG_RECORDGAIN], "%30d", &gain) != 1) {
ast_log(LOG_WARNING, "Invalid value '%s' provided for record gain option\n", opts[OPT_ARG_RECORDGAIN]);
return -1;
} else
@@ -2596,7 +2596,7 @@ static int create_vmaccount(char *name, struct ast_variable *var, int realtime)
} else if (!strcasecmp(var->name, "pager")) {
ast_copy_string(vmu->pager, var->value, sizeof(vmu->pager));
} else if (!strcasecmp(var->name, "volgain")) {
- sscanf(var->value, "%lf", &vmu->volgain);
+ sscanf(var->value, "%30lf", &vmu->volgain);
} else {
ast_log(LOG_ERROR, "Unknown configuration option for minivm account %s : %s\n", name, var->name);
}
@@ -2766,7 +2766,7 @@ static int apply_general_options(struct ast_variable *var)
global_silencethreshold = atoi(var->value);
} else if (!strcmp(var->name, "maxmessage")) {
int x;
- if (sscanf(var->value, "%d", &x) == 1) {
+ if (sscanf(var->value, "%30d", &x) == 1) {
global_vmmaxmessage = x;
} else {
error ++;
@@ -2774,7 +2774,7 @@ static int apply_general_options(struct ast_variable *var)
}
} else if (!strcmp(var->name, "minmessage")) {
int x;
- if (sscanf(var->value, "%d", &x) == 1) {
+ if (sscanf(var->value, "%30d", &x) == 1) {
global_vmminmessage = x;
if (global_maxsilence <= global_vmminmessage)
ast_log(LOG_WARNING, "maxsilence should be less than minmessage or you may get empty messages\n");
diff --git a/apps/app_mixmonitor.c b/apps/app_mixmonitor.c
index 10866e358..7c1782bd4 100644
--- a/apps/app_mixmonitor.c
+++ b/apps/app_mixmonitor.c
@@ -459,7 +459,7 @@ static int mixmonitor_exec(struct ast_channel *chan, const char *data)
if (ast_test_flag(&flags, MUXFLAG_READVOLUME)) {
if (ast_strlen_zero(opts[OPT_ARG_READVOLUME])) {
ast_log(LOG_WARNING, "No volume level was provided for the heard volume ('v') option.\n");
- } else if ((sscanf(opts[OPT_ARG_READVOLUME], "%d", &x) != 1) || (x < -4) || (x > 4)) {
+ } else if ((sscanf(opts[OPT_ARG_READVOLUME], "%2d", &x) != 1) || (x < -4) || (x > 4)) {
ast_log(LOG_NOTICE, "Heard volume must be a number between -4 and 4, not '%s'\n", opts[OPT_ARG_READVOLUME]);
} else {
readvol = get_volfactor(x);
@@ -469,7 +469,7 @@ static int mixmonitor_exec(struct ast_channel *chan, const char *data)
if (ast_test_flag(&flags, MUXFLAG_WRITEVOLUME)) {
if (ast_strlen_zero(opts[OPT_ARG_WRITEVOLUME])) {
ast_log(LOG_WARNING, "No volume level was provided for the spoken volume ('V') option.\n");
- } else if ((sscanf(opts[OPT_ARG_WRITEVOLUME], "%d", &x) != 1) || (x < -4) || (x > 4)) {
+ } else if ((sscanf(opts[OPT_ARG_WRITEVOLUME], "%2d", &x) != 1) || (x < -4) || (x > 4)) {
ast_log(LOG_NOTICE, "Spoken volume must be a number between -4 and 4, not '%s'\n", opts[OPT_ARG_WRITEVOLUME]);
} else {
writevol = get_volfactor(x);
@@ -479,7 +479,7 @@ static int mixmonitor_exec(struct ast_channel *chan, const char *data)
if (ast_test_flag(&flags, MUXFLAG_VOLUME)) {
if (ast_strlen_zero(opts[OPT_ARG_VOLUME])) {
ast_log(LOG_WARNING, "No volume level was provided for the combined volume ('W') option.\n");
- } else if ((sscanf(opts[OPT_ARG_VOLUME], "%d", &x) != 1) || (x < -4) || (x > 4)) {
+ } else if ((sscanf(opts[OPT_ARG_VOLUME], "%2d", &x) != 1) || (x < -4) || (x > 4)) {
ast_log(LOG_NOTICE, "Combined volume must be a number between -4 and 4, not '%s'\n", opts[OPT_ARG_VOLUME]);
} else {
readvol = writevol = get_volfactor(x);
diff --git a/apps/app_morsecode.c b/apps/app_morsecode.c
index 0947681e9..a234cd431 100644
--- a/apps/app_morsecode.c
+++ b/apps/app_morsecode.c
@@ -132,7 +132,7 @@ static int morsecode_exec(struct ast_channel *chan, const char *data)
/* Use variable MORESEDITLEN, if set (else 80) */
ast_channel_lock(chan);
ditlenc = pbx_builtin_getvar_helper(chan, "MORSEDITLEN");
- if (ast_strlen_zero(ditlenc) || (sscanf(ditlenc, "%d", &ditlen) != 1)) {
+ if (ast_strlen_zero(ditlenc) || (sscanf(ditlenc, "%30d", &ditlen) != 1)) {
ditlen = 80;
}
ast_channel_unlock(chan);
@@ -140,7 +140,7 @@ static int morsecode_exec(struct ast_channel *chan, const char *data)
/* Use variable MORSETONE, if set (else 800) */
ast_channel_lock(chan);
tonec = pbx_builtin_getvar_helper(chan, "MORSETONE");
- if (ast_strlen_zero(tonec) || (sscanf(tonec, "%d", &tone) != 1)) {
+ if (ast_strlen_zero(tonec) || (sscanf(tonec, "%30d", &tone) != 1)) {
tone = 800;
}
ast_channel_unlock(chan);
diff --git a/apps/app_originate.c b/apps/app_originate.c
index b9bb8821b..659ea2949 100644
--- a/apps/app_originate.c
+++ b/apps/app_originate.c
@@ -136,7 +136,7 @@ static int originate_exec(struct ast_channel *chan, const char *data)
if (args.argc == 5) {
/* Context/Exten/Priority all specified */
- if (sscanf(args.arg3, "%d", &priority) != 1) {
+ if (sscanf(args.arg3, "%30d", &priority) != 1) {
ast_log(LOG_ERROR, "Invalid priority: '%s'\n", args.arg3);
goto return_cleanup;
}
diff --git a/apps/app_osplookup.c b/apps/app_osplookup.c
index 6bfa4828f..04da14072 100644
--- a/apps/app_osplookup.c
+++ b/apps/app_osplookup.c
@@ -416,7 +416,7 @@ static int osp_create_provider(
ast_log(LOG_WARNING, "OSP: Too many Service Points at line %d\n", v->lineno);
}
} else if (!strcasecmp(v->name, "maxconnections")) {
- if ((sscanf(v->value, "%d", &t) == 1) && (t >= OSP_MIN_MAXCONNECTIONS) && (t <= OSP_MAX_MAXCONNECTIONS)) {
+ if ((sscanf(v->value, "%30d", &t) == 1) && (t >= OSP_MIN_MAXCONNECTIONS) && (t <= OSP_MAX_MAXCONNECTIONS)) {
p->maxconnections = t;
ast_debug(1, "OSP: maxconnections '%d'\n", t);
} else {
@@ -424,7 +424,7 @@ static int osp_create_provider(
OSP_MIN_MAXCONNECTIONS, OSP_MAX_MAXCONNECTIONS, v->value, v->lineno);
}
} else if (!strcasecmp(v->name, "retrydelay")) {
- if ((sscanf(v->value, "%d", &t) == 1) && (t >= OSP_MIN_RETRYDELAY) && (t <= OSP_MAX_RETRYDELAY)) {
+ if ((sscanf(v->value, "%30d", &t) == 1) && (t >= OSP_MIN_RETRYDELAY) && (t <= OSP_MAX_RETRYDELAY)) {
p->retrydelay = t;
ast_debug(1, "OSP: retrydelay '%d'\n", t);
} else {
@@ -432,7 +432,7 @@ static int osp_create_provider(
OSP_MIN_RETRYDELAY, OSP_MAX_RETRYDELAY, v->value, v->lineno);
}
} else if (!strcasecmp(v->name, "retrylimit")) {
- if ((sscanf(v->value, "%d", &t) == 1) && (t >= OSP_MIN_RETRYLIMIT) && (t <= OSP_MAX_RETRYLIMIT)) {
+ if ((sscanf(v->value, "%30d", &t) == 1) && (t >= OSP_MIN_RETRYLIMIT) && (t <= OSP_MAX_RETRYLIMIT)) {
p->retrylimit = t;
ast_debug(1, "OSP: retrylimit '%d'\n", t);
} else {
@@ -440,7 +440,7 @@ static int osp_create_provider(
OSP_MIN_RETRYLIMIT, OSP_MAX_RETRYLIMIT, v->value, v->lineno);
}
} else if (!strcasecmp(v->name, "timeout")) {
- if ((sscanf(v->value, "%d", &t) == 1) && (t >= OSP_MIN_TIMEOUT) && (t <= OSP_MAX_TIMEOUT)) {
+ if ((sscanf(v->value, "%30d", &t) == 1) && (t >= OSP_MIN_TIMEOUT) && (t <= OSP_MAX_TIMEOUT)) {
p->timeout = t;
ast_debug(1, "OSP: timeout '%d'\n", t);
} else {
@@ -451,7 +451,7 @@ static int osp_create_provider(
ast_copy_string(p->source, v->value, sizeof(p->source));
ast_debug(1, "OSP: source '%s'\n", p->source);
} else if (!strcasecmp(v->name, "authpolicy")) {
- if ((sscanf(v->value, "%d", &t) == 1) && ((t == OSP_AUTH_NO) || (t == OSP_AUTH_YES) || (t == OSP_AUTH_EXCLUSIVE))) {
+ if ((sscanf(v->value, "%30d", &t) == 1) && ((t == OSP_AUTH_NO) || (t == OSP_AUTH_YES) || (t == OSP_AUTH_EXCLUSIVE))) {
p->authpolicy = t;
ast_debug(1, "OSP: authpolicy '%d'\n", t);
} else {
@@ -1588,11 +1588,11 @@ static int osplookup_exec(
headp = &chan->varshead;
AST_LIST_TRAVERSE(headp, current, entries) {
if (!strcasecmp(ast_var_name(current), "OSPINHANDLE")) {
- if (sscanf(ast_var_value(current), "%d", &result.inhandle) != 1) {
+ if (sscanf(ast_var_value(current), "%30d", &result.inhandle) != 1) {
result.inhandle = OSP_INVALID_HANDLE;
}
} else if (!strcasecmp(ast_var_name(current), "OSPINTIMELIMIT")) {
- if (sscanf(ast_var_value(current), "%d", &result.intimelimit) != 1) {
+ if (sscanf(ast_var_value(current), "%30d", &result.intimelimit) != 1) {
result.intimelimit = OSP_DEF_TIMELIMIT;
}
} else if (!strcasecmp(ast_var_name(current), "OSPINNETWORKID")) {
@@ -1734,7 +1734,7 @@ static int ospnext_exec(
AST_STANDARD_APP_ARGS(args, tmp);
- if (!ast_strlen_zero(args.cause) && sscanf(args.cause, "%d", &cause) != 1) {
+ if (!ast_strlen_zero(args.cause) && sscanf(args.cause, "%30d", &cause) != 1) {
cause = 0;
}
ast_debug(1, "OSPNext: cause '%d'\n", cause);
@@ -1752,23 +1752,23 @@ static int ospnext_exec(
headp = &chan->varshead;
AST_LIST_TRAVERSE(headp, current, entries) {
if (!strcasecmp(ast_var_name(current), "OSPINHANDLE")) {
- if (sscanf(ast_var_value(current), "%d", &result.inhandle) != 1) {
+ if (sscanf(ast_var_value(current), "%30d", &result.inhandle) != 1) {
result.inhandle = OSP_INVALID_HANDLE;
}
} else if (!strcasecmp(ast_var_name(current), "OSPOUTHANDLE")) {
- if (sscanf(ast_var_value(current), "%d", &result.outhandle) != 1) {
+ if (sscanf(ast_var_value(current), "%30d", &result.outhandle) != 1) {
result.outhandle = OSP_INVALID_HANDLE;
}
} else if (!strcasecmp(ast_var_name(current), "OSPINTIMELIMIT")) {
- if (sscanf(ast_var_value(current), "%d", &result.intimelimit) != 1) {
+ if (sscanf(ast_var_value(current), "%30d", &result.intimelimit) != 1) {
result.intimelimit = OSP_DEF_TIMELIMIT;
}
} else if (!strcasecmp(ast_var_name(current), "OSPOUTCALLIDTYPES")) {
- if (sscanf(ast_var_value(current), "%d", &callidtypes) != 1) {
+ if (sscanf(ast_var_value(current), "%30d", &callidtypes) != 1) {
callidtypes = OSP_CALLID_UNDEFINED;
}
} else if (!strcasecmp(ast_var_name(current), "OSPRESULTS")) {
- if (sscanf(ast_var_value(current), "%d", &result.numresults) != 1) {
+ if (sscanf(ast_var_value(current), "%30d", &result.numresults) != 1) {
result.numresults = 0;
}
}
@@ -1889,11 +1889,11 @@ static int ospfinished_exec(
headp = &chan->varshead;
AST_LIST_TRAVERSE(headp, current, entries) {
if (!strcasecmp(ast_var_name(current), "OSPINHANDLE")) {
- if (sscanf(ast_var_value(current), "%d", &inhandle) != 1) {
+ if (sscanf(ast_var_value(current), "%30d", &inhandle) != 1) {
inhandle = OSP_INVALID_HANDLE;
}
} else if (!strcasecmp(ast_var_name(current), "OSPOUTHANDLE")) {
- if (sscanf(ast_var_value(current), "%d", &outhandle) != 1) {
+ if (sscanf(ast_var_value(current), "%30d", &outhandle) != 1) {
outhandle = OSP_INVALID_HANDLE;
}
} else if (!recorded &&
@@ -1910,7 +1910,7 @@ static int ospfinished_exec(
ast_debug(1, "OSPFinish: OSPOUTHANDLE '%d'\n", outhandle);
ast_debug(1, "OSPFinish: recorded '%d'\n", recorded);
- if (!ast_strlen_zero(args.cause) && sscanf(args.cause, "%d", &cause) != 1) {
+ if (!ast_strlen_zero(args.cause) && sscanf(args.cause, "%30d", &cause) != 1) {
cause = 0;
}
ast_debug(1, "OSPFinish: cause '%d'\n", cause);
@@ -2012,7 +2012,7 @@ static int osp_load(int reload)
t = ast_variable_retrieve(cfg, OSP_GENERAL_CAT, "tokenformat");
if (t) {
- if ((sscanf(t, "%d", &v) == 1) &&
+ if ((sscanf(t, "%30d", &v) == 1) &&
((v == TOKEN_ALGO_SIGNED) || (v == TOKEN_ALGO_UNSIGNED) || (v == TOKEN_ALGO_BOTH)))
{
osp_tokenformat = v;
diff --git a/apps/app_privacy.c b/apps/app_privacy.c
index 37b440b8a..3d324cbfb 100644
--- a/apps/app_privacy.c
+++ b/apps/app_privacy.c
@@ -111,13 +111,13 @@ static int privacy_exec(struct ast_channel *chan, const char *data)
AST_STANDARD_APP_ARGS(args, parse);
if (args.maxretries) {
- if (sscanf(args.maxretries, "%d", &x) == 1)
+ if (sscanf(args.maxretries, "%30d", &x) == 1)
maxretries = x;
else
ast_log(LOG_WARNING, "Invalid max retries argument\n");
}
if (args.minlength) {
- if (sscanf(args.minlength, "%d", &x) == 1)
+ if (sscanf(args.minlength, "%30d", &x) == 1)
minlength = x;
else
ast_log(LOG_WARNING, "Invalid min length argument\n");
diff --git a/apps/app_queue.c b/apps/app_queue.c
index 34a6a7d03..dedf489f8 100644
--- a/apps/app_queue.c
+++ b/apps/app_queue.c
@@ -5155,7 +5155,7 @@ static int aqm_exec(struct ast_channel *chan, const char *data)
}
if (!ast_strlen_zero(args.penalty)) {
- if ((sscanf(args.penalty, "%d", &penalty) != 1) || penalty < 0) {
+ if ((sscanf(args.penalty, "%30d", &penalty) != 1) || penalty < 0) {
ast_log(LOG_WARNING, "Penalty '%s' is invalid, must be an integer >= 0\n", args.penalty);
penalty = 0;
}
@@ -5316,7 +5316,7 @@ static int queue_exec(struct ast_channel *chan, const char *data)
ast_channel_lock(chan);
user_priority = pbx_builtin_getvar_helper(chan, "QUEUE_PRIO");
if (user_priority) {
- if (sscanf(user_priority, "%d", &prio) == 1) {
+ if (sscanf(user_priority, "%30d", &prio) == 1) {
ast_debug(1, "%s: Got priority %d from ${QUEUE_PRIO}.\n", chan->name, prio);
} else {
ast_log(LOG_WARNING, "${QUEUE_PRIO}: Invalid value (%s), channel %s.\n",
@@ -5331,7 +5331,7 @@ static int queue_exec(struct ast_channel *chan, const char *data)
/* Get the maximum penalty from the variable ${QUEUE_MAX_PENALTY} */
if ((max_penalty_str = pbx_builtin_getvar_helper(chan, "QUEUE_MAX_PENALTY"))) {
- if (sscanf(max_penalty_str, "%d", &max_penalty) == 1) {
+ if (sscanf(max_penalty_str, "%30d", &max_penalty) == 1) {
ast_debug(1, "%s: Got max penalty %d from ${QUEUE_MAX_PENALTY}.\n", chan->name, max_penalty);
} else {
ast_log(LOG_WARNING, "${QUEUE_MAX_PENALTY}: Invalid value (%s), channel %s.\n",
@@ -5343,7 +5343,7 @@ static int queue_exec(struct ast_channel *chan, const char *data)
}
if ((min_penalty_str = pbx_builtin_getvar_helper(chan, "QUEUE_MIN_PENALTY"))) {
- if (sscanf(min_penalty_str, "%d", &min_penalty) == 1) {
+ if (sscanf(min_penalty_str, "%30d", &min_penalty) == 1) {
ast_debug(1, "%s: Got min penalty %d from ${QUEUE_MIN_PENALTY}.\n", chan->name, min_penalty);
} else {
ast_log(LOG_WARNING, "${QUEUE_MIN_PENALTY}: Invalid value (%s), channel %s.\n",
@@ -6712,7 +6712,7 @@ static int manager_add_queue_member(struct mansession *s, const struct message *
if (ast_strlen_zero(penalty_s))
penalty = 0;
- else if (sscanf(penalty_s, "%d", &penalty) != 1 || penalty < 0)
+ else if (sscanf(penalty_s, "%30d", &penalty) != 1 || penalty < 0)
penalty = 0;
if (ast_strlen_zero(paused_s))
@@ -6952,7 +6952,7 @@ static char *handle_queue_add_member(struct ast_cli_entry *e, int cmd, struct as
queuename = a->argv[5];
interface = a->argv[3];
if (a->argc >= 8) {
- if (sscanf(a->argv[7], "%d", &penalty) == 1) {
+ if (sscanf(a->argv[7], "%30d", &penalty) == 1) {
if (penalty < 0) {
ast_cli(a->fd, "Penalty must be >= 0\n");
penalty = 0;
diff --git a/apps/app_readfile.c b/apps/app_readfile.c
index 252c4454d..8c3bcae64 100644
--- a/apps/app_readfile.c
+++ b/apps/app_readfile.c
@@ -94,7 +94,7 @@ static int readfile_exec(struct ast_channel *chan, const char *data)
}
if (length) {
- if ((sscanf(length, "%d", &len) != 1) || (len < 0)) {
+ if ((sscanf(length, "%30d", &len) != 1) || (len < 0)) {
ast_log(LOG_WARNING, "%s is not a positive number, defaulting length to max\n", length);
len = 0;
}
diff --git a/apps/app_record.c b/apps/app_record.c
index 06d9c2cdd..f6e067c84 100644
--- a/apps/app_record.c
+++ b/apps/app_record.c
@@ -190,7 +190,7 @@ static int record_exec(struct ast_channel *chan, const char *data)
return -1;
}
if (args.silence) {
- if ((sscanf(args.silence, "%d", &i) == 1) && (i > -1)) {
+ if ((sscanf(args.silence, "%30d", &i) == 1) && (i > -1)) {
silence = i * 1000;
} else if (!ast_strlen_zero(args.silence)) {
ast_log(LOG_WARNING, "'%s' is not a valid silence duration\n", args.silence);
@@ -198,7 +198,7 @@ static int record_exec(struct ast_channel *chan, const char *data)
}
if (args.maxduration) {
- if ((sscanf(args.maxduration, "%d", &i) == 1) && (i > -1))
+ if ((sscanf(args.maxduration, "%30d", &i) == 1) && (i > -1))
/* Convert duration to milliseconds */
maxduration = i * 1000;
else if (!ast_strlen_zero(args.maxduration))
diff --git a/apps/app_rpt.c b/apps/app_rpt.c
index 0aa20e000..07721c2a5 100644
--- a/apps/app_rpt.c
+++ b/apps/app_rpt.c
@@ -2106,7 +2106,7 @@ static int myatoi(const char *str)
}
/* leave this %i alone, non-base-10 input is useful here */
- if (sscanf(str, "%i", &ret) != 1) {
+ if (sscanf(str, "%30i", &ret) != 1) {
return -1;
}
@@ -2333,7 +2333,7 @@ static char *cs_keywords[] = {"rptena","rptdis","apena","apdis","lnkena","lnkdis
/* do not use atoi() here, we need to be able to have
the input specified in hex or decimal so we use
sscanf with a %i */
- if ((!val) || (sscanf(val,"%i",&rpt_vars[n].p.iobase) != 1))
+ if ((!val) || (sscanf(val,"%30i",&rpt_vars[n].p.iobase) != 1))
rpt_vars[n].p.iobase = DEFAULT_IOBASE;
val = (char *) ast_variable_retrieve(cfg,this,"ioport");
rpt_vars[n].p.ioport = val;
@@ -3650,7 +3650,7 @@ static int send_tone_telemetry(struct ast_channel *chan, char *tonestring)
tonesubset = strsep(&stringp,")");
if(!tonesubset)
break;
- if(sscanf(tonesubset,"(%d,%d,%d,%d", &f1, &f2, &duration, &amplitude) != 4)
+ if(sscanf(tonesubset,"(%30d,%30d,%30d,%30d", &f1, &f2, &duration, &amplitude) != 4)
break;
res = play_tone_pair(chan, f1, f2, duration, amplitude);
if(res)
@@ -5072,7 +5072,7 @@ struct dahdi_params par;
p = strstr(tdesc, "version");
if(!p)
break;
- if(sscanf(p, "version %d.%d", &vmajor, &vminor) != 2)
+ if(sscanf(p, "version %30d.%30d", &vmajor, &vminor) != 2)
break;
wait_interval(myrpt, DLY_TELEM, mychannel); /* Wait a little bit */
/* Say "version" */
@@ -6680,6 +6680,8 @@ static int collect_function_digits(struct rpt *myrpt, char *digits,
static void handle_link_data(struct rpt *myrpt, struct rpt_link *mylink,
char *str)
{
+/* XXX ATTENTION: if you change the size of these arrays you MUST
+ * change the limits in corresponding sscanf() calls below. */
char tmp[512],tmp1[512],cmd[300] = "",dest[300],src[300],c;
int i,seq, res, ts;
struct rpt_link *l;
@@ -6718,7 +6720,7 @@ struct ast_frame wf;
}
if (tmp[0] == 'K')
{
- if (sscanf(tmp,"%s %s %s %d %d",cmd,dest,src,&seq,&ts) != 5)
+ if (sscanf(tmp, "%299s %299s %299s %30d %30d", cmd, dest, src, &seq, &ts) != 5)
{
ast_log(LOG_WARNING, "Unable to parse keying string %s\n",str);
return;
@@ -6826,7 +6828,9 @@ struct ast_frame wf;
}
if (tmp[0] == 'I')
{
- if (sscanf(tmp,"%s %s %x",cmd,src,&seq) != 3)
+ /* XXX WARNING: be very careful with the limits on the folowing
+ * sscanf() call, make sure they match the values defined above */
+ if (sscanf(tmp,"%299s %299s %30x",cmd,src,&seq) != 3)
{
ast_log(LOG_WARNING, "Unable to parse ident string %s\n",str);
return;
@@ -6836,7 +6840,9 @@ struct ast_frame wf;
}
else
{
- if (sscanf(tmp,"%s %s %s %d %c",cmd,dest,src,&seq,&c) != 5)
+ /* XXX WARNING: be very careful with the limits on the folowing
+ * sscanf() call, make sure they match the values defined above */
+ if (sscanf(tmp,"%299s %299s %299s %30d %1c",cmd,dest,src,&seq,&c) != 5)
{
ast_log(LOG_WARNING, "Unable to parse link string %s\n",str);
return;
@@ -10231,6 +10237,8 @@ int ret,res = 0,src;
static int handle_remote_data(struct rpt *myrpt, char *str)
{
+/* XXX ATTENTION: if you change the size of these arrays you MUST
+ * change the limits in corresponding sscanf() calls below. */
char tmp[300],cmd[300],dest[300],src[300],c;
int seq,res;
@@ -10246,7 +10254,9 @@ int seq,res;
#ifndef DO_NOT_NOTIFY_MDC1200_ON_REMOTE_BASES
if (tmp[0] == 'I')
{
- if (sscanf(tmp,"%s %s %x",cmd,src,&seq) != 3)
+ /* XXX WARNING: be very careful with the limits on the folowing
+ * sscanf() call, make sure they match the values defined above */
+ if (sscanf(tmp,"%299s %299s %30x",cmd,src,&seq) != 3)
{
ast_log(LOG_WARNING, "Unable to parse ident string %s\n",str);
return 0;
@@ -10255,7 +10265,9 @@ int seq,res;
return 0;
}
#endif
- if (sscanf(tmp,"%s %s %s %d %c",cmd,dest,src,&seq,&c) != 5)
+ /* XXX WARNING: be very careful with the limits on the folowing
+ * sscanf() call, make sure they match the values defined above */
+ if (sscanf(tmp,"%299s %299s %299s %30d %1c",cmd,dest,src,&seq,&c) != 5)
{
ast_log(LOG_WARNING, "Unable to parse link string %s\n",str);
return 0;
@@ -11886,7 +11898,7 @@ char tmpstr[300],lstr[MAXLINKLIST];
p = strstr(tdesc, "version");
if(p){
int vmajor,vminor;
- if(sscanf(p, "version %d.%d", &vmajor, &vminor) == 2)
+ if(sscanf(p, "version %30d.%30d", &vmajor, &vminor) == 2)
sprintf(str + strlen(str),"&apprptvers=%d.%d",vmajor,vminor);
}
time(&now);
diff --git a/apps/app_setcallerid.c b/apps/app_setcallerid.c
index d2dbb8913..0e2ce485d 100644
--- a/apps/app_setcallerid.c
+++ b/apps/app_setcallerid.c
@@ -95,7 +95,7 @@ static int setcallerid_pres_exec(struct ast_channel *chan, const char *data)
}
/* For interface consistency, permit the argument to be specified as a number */
- if (sscanf(data, "%d", &pres) != 1 || pres < 0 || pres > 255 || (pres & 0x9c)) {
+ if (sscanf(data, "%30d", &pres) != 1 || pres < 0 || pres > 255 || (pres & 0x9c)) {
pres = ast_parse_caller_presentation(data);
}
diff --git a/apps/app_sms.c b/apps/app_sms.c
index 67b5c012a..bed9f5c7e 100644
--- a/apps/app_sms.c
+++ b/apps/app_sms.c
@@ -878,7 +878,7 @@ static void sms_readfile(sms_t * h, char *fn)
} else if (!strcmp(line, "scts")) { /* get date/time */
int Y, m, d, H, M, S;
/* XXX Why aren't we using ast_strptime here? */
- if (sscanf(p, "%d-%d-%dT%d:%d:%d", &Y, &m, &d, &H, &M, &S) == 6) {
+ if (sscanf(p, "%4d-%2d-%2dT%2d:%2d:%2d", &Y, &m, &d, &H, &M, &S) == 6) {
struct ast_tm t = { 0, };
t.tm_year = Y - 1900;
t.tm_mon = m - 1;
diff --git a/apps/app_stack.c b/apps/app_stack.c
index d46f0481c..e32b067d8 100644
--- a/apps/app_stack.c
+++ b/apps/app_stack.c
@@ -570,7 +570,7 @@ static int handle_gosub(struct ast_channel *chan, AGI *agi, int argc, const char
ast_debug(1, "Gosub called with %d arguments: 0:%s 1:%s 2:%s 3:%s 4:%s\n", argc, argv[0], argv[1], argv[2], argv[3], argc == 5 ? argv[4] : "");
- if (sscanf(argv[3], "%d", &priority) != 1 || priority < 1) {
+ if (sscanf(argv[3], "%30d", &priority) != 1 || priority < 1) {
/* Lookup the priority label */
if ((priority = ast_findlabel_extension(chan, argv[1], argv[2], argv[3], chan->cid.cid_num)) < 0) {
ast_log(LOG_ERROR, "Priority '%s' not found in '%s@%s'\n", argv[3], argv[2], argv[1]);
diff --git a/apps/app_talkdetect.c b/apps/app_talkdetect.c
index c90b60d36..83b8886cf 100644
--- a/apps/app_talkdetect.c
+++ b/apps/app_talkdetect.c
@@ -105,16 +105,16 @@ static int background_detect_exec(struct ast_channel *chan, const char *data)
tmp = ast_strdupa(data);
AST_STANDARD_APP_ARGS(args, tmp);
- if (!ast_strlen_zero(args.silence) && (sscanf(args.silence, "%d", &x) == 1) && (x > 0)) {
+ if (!ast_strlen_zero(args.silence) && (sscanf(args.silence, "%30d", &x) == 1) && (x > 0)) {
sil = x;
}
- if (!ast_strlen_zero(args.min) && (sscanf(args.min, "%d", &x) == 1) && (x > 0)) {
+ if (!ast_strlen_zero(args.min) && (sscanf(args.min, "%30d", &x) == 1) && (x > 0)) {
min = x;
}
- if (!ast_strlen_zero(args.max) && (sscanf(args.max, "%d", &x) == 1) && (x > 0)) {
+ if (!ast_strlen_zero(args.max) && (sscanf(args.max, "%30d", &x) == 1) && (x > 0)) {
max = x;
}
- if (!ast_strlen_zero(args.analysistime) && (sscanf(args.analysistime, "%d", &x) == 1) && (x > 0)) {
+ if (!ast_strlen_zero(args.analysistime) && (sscanf(args.analysistime, "%30d", &x) == 1) && (x > 0)) {
analysistime = x;
}
diff --git a/apps/app_verbose.c b/apps/app_verbose.c
index ed86e5e6a..3d2c18d01 100644
--- a/apps/app_verbose.c
+++ b/apps/app_verbose.c
@@ -92,7 +92,7 @@ static int verbose_exec(struct ast_channel *chan, const char *data)
args.level = "0";
}
- if (sscanf(args.level, "%d", &vsize) != 1) {
+ if (sscanf(args.level, "%30d", &vsize) != 1) {
vsize = 0;
ast_log(LOG_WARNING, "'%s' is not a verboser number\n", args.level);
}
diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c
index e5576dfb0..974a02961 100644
--- a/apps/app_voicemail.c
+++ b/apps/app_voicemail.c
@@ -926,7 +926,7 @@ static void apply_option(struct ast_vm_user *vmu, const char *var, const char *v
} else if (!strcasecmp(var, "sayduration")){
ast_set2_flag(vmu, ast_true(value), VM_SAYDURATION);
} else if (!strcasecmp(var, "saydurationm")){
- if (sscanf(value, "%d", &x) == 1) {
+ if (sscanf(value, "%30d", &x) == 1) {
vmu->saydurationm = x;
} else {
ast_log(AST_LOG_WARNING, "Invalid min duration for say duration\n");
@@ -960,7 +960,7 @@ static void apply_option(struct ast_vm_user *vmu, const char *var, const char *v
vmu->maxmsg = MAXMSGLIMIT;
}
} else if (!strcasecmp(var, "backupdeleted")) {
- if (sscanf(value, "%d", &x) == 1)
+ if (sscanf(value, "%30d", &x) == 1)
vmu->maxdeletedmsg = x;
else if (ast_true(value))
vmu->maxdeletedmsg = MAXMSG;
@@ -975,7 +975,7 @@ static void apply_option(struct ast_vm_user *vmu, const char *var, const char *v
vmu->maxdeletedmsg = MAXMSGLIMIT;
}
} else if (!strcasecmp(var, "volgain")) {
- sscanf(value, "%lf", &vmu->volgain);
+ sscanf(value, "%30lf", &vmu->volgain);
} else if (!strcasecmp(var, "options")) {
apply_options(vmu, value);
}
@@ -3105,7 +3105,7 @@ static int last_message_index(struct ast_vm_user *vmu, char *dir)
ast_odbc_release_obj(obj);
goto yuck;
}
- if (sscanf(rowdata, "%d", &x) != 1)
+ if (sscanf(rowdata, "%30d", &x) != 1)
ast_log(AST_LOG_WARNING, "Failed to read message count!\n");
SQLFreeHandle (SQL_HANDLE_STMT, stmt);
ast_odbc_release_obj(obj);
@@ -3160,7 +3160,7 @@ static int message_exists(char *dir, int msgnum)
ast_odbc_release_obj(obj);
goto yuck;
}
- if (sscanf(rowdata, "%d", &x) != 1)
+ if (sscanf(rowdata, "%30d", &x) != 1)
ast_log(AST_LOG_WARNING, "Failed to read message count!\n");
SQLFreeHandle (SQL_HANDLE_STMT, stmt);
ast_odbc_release_obj(obj);
@@ -3578,7 +3578,7 @@ static int last_message_index(struct ast_vm_user *vmu, char *dir)
* find each file. */
msgdir = opendir(dir);
while ((msgdirent = readdir(msgdir))) {
- if (sscanf(msgdirent->d_name, "msg%d", &msgdirint) == 1 && msgdirint < MAXMSGLIMIT)
+ if (sscanf(msgdirent->d_name, "msg%30d", &msgdirint) == 1 && msgdirint < MAXMSGLIMIT)
map[msgdirint] = 1;
}
closedir(msgdir);
@@ -3903,7 +3903,7 @@ static void prep_email_sub_vars(struct ast_channel *ast, struct ast_vm_user *vmu
pbx_builtin_setvar_helper(ast, "ORIG_VM_CIDNUM", origcidnum);
}
- if ((origtime = ast_variable_retrieve(msg_cfg, "message", "origtime")) && sscanf(origtime, "%d", &inttime) == 1) {
+ if ((origtime = ast_variable_retrieve(msg_cfg, "message", "origtime")) && sscanf(origtime, "%30d", &inttime) == 1) {
struct timeval tv = { inttime, };
struct ast_tm tm;
ast_localtime(&tv, &tm, NULL);
@@ -4258,7 +4258,7 @@ static void make_email_file(FILE *p, char *srcemail, struct ast_vm_user *vmu, in
/* You might be tempted to do origdate, except that a) it's in the wrong
* format, and b) it's missing for IMAP recordings. */
- if ((v = ast_variable_retrieve(msg_cfg, "message", "origtime")) && sscanf(v, "%d", &inttime) == 1) {
+ if ((v = ast_variable_retrieve(msg_cfg, "message", "origtime")) && sscanf(v, "%30d", &inttime) == 1) {
struct timeval tv = { inttime, };
struct ast_tm tm;
ast_localtime(&tv, &tm, NULL);
@@ -9013,7 +9013,7 @@ static int vm_execmain(struct ast_channel *chan, const char *data)
if (ast_test_flag(&flags, OPT_RECORDGAIN)) {
int gain;
if (!ast_strlen_zero(opts[OPT_ARG_RECORDGAIN])) {
- if (sscanf(opts[OPT_ARG_RECORDGAIN], "%d", &gain) != 1) {
+ if (sscanf(opts[OPT_ARG_RECORDGAIN], "%30d", &gain) != 1) {
ast_log(AST_LOG_WARNING, "Invalid value '%s' provided for record gain option\n", opts[OPT_ARG_RECORDGAIN]);
return -1;
} else {
@@ -9026,7 +9026,7 @@ static int vm_execmain(struct ast_channel *chan, const char *data)
if (ast_test_flag(&flags, OPT_AUTOPLAY) ) {
play_auto = 1;
if (opts[OPT_ARG_PLAYFOLDER]) {
- if (sscanf(opts[OPT_ARG_PLAYFOLDER], "%d", &play_folder) != 1) {
+ if (sscanf(opts[OPT_ARG_PLAYFOLDER], "%30d", &play_folder) != 1) {
ast_log(AST_LOG_WARNING, "Invalid value '%s' provided for folder autoplay option\n", opts[OPT_ARG_PLAYFOLDER]);
}
} else {
@@ -9692,7 +9692,7 @@ static int vm_exec(struct ast_channel *chan, const char *data)
if (ast_test_flag(&flags, OPT_RECORDGAIN)) {
int gain;
- if (sscanf(opts[OPT_ARG_RECORDGAIN], "%d", &gain) != 1) {
+ if (sscanf(opts[OPT_ARG_RECORDGAIN], "%30d", &gain) != 1) {
ast_log(AST_LOG_WARNING, "Invalid value '%s' provided for record gain option\n", opts[OPT_ARG_RECORDGAIN]);
return -1;
} else {
@@ -10529,7 +10529,7 @@ static int load_config(int reload)
volgain = 0.0;
if ((val = ast_variable_retrieve(cfg, "general", "volgain")))
- sscanf(val, "%lf", &volgain);
+ sscanf(val, "%30lf", &volgain);
#ifdef ODBC_STORAGE
strcpy(odbc_database, "asterisk");
@@ -10569,7 +10569,7 @@ static int load_config(int reload)
if (!(val = ast_variable_retrieve(cfg, "general", "backupdeleted"))) {
maxdeletedmsg = 0;
} else {
- if (sscanf(val, "%d", &x) == 1)
+ if (sscanf(val, "%30d", &x) == 1)
maxdeletedmsg = x;
else if (ast_true(val))
maxdeletedmsg = MAXMSG;
@@ -10721,7 +10721,7 @@ static int load_config(int reload)
vmmaxsecs = 0;
if ((val = ast_variable_retrieve(cfg, "general", "maxsecs"))) {
- if (sscanf(val, "%d", &x) == 1) {
+ if (sscanf(val, "%30d", &x) == 1) {
vmmaxsecs = x;
} else {
ast_log(AST_LOG_WARNING, "Invalid max message time length\n");
@@ -10732,7 +10732,7 @@ static int load_config(int reload)
maxmessage_deprecate = 1;
ast_log(AST_LOG_WARNING, "Setting 'maxmessage' has been deprecated in favor of 'maxsecs'.\n");
}
- if (sscanf(val, "%d", &x) == 1) {
+ if (sscanf(val, "%30d", &x) == 1) {
vmmaxsecs = x;
} else {
ast_log(AST_LOG_WARNING, "Invalid max message time length\n");
@@ -10741,7 +10741,7 @@ static int load_config(int reload)
vmminsecs = 0;
if ((val = ast_variable_retrieve(cfg, "general", "minsecs"))) {
- if (sscanf(val, "%d", &x) == 1) {
+ if (sscanf(val, "%30d", &x) == 1) {
vmminsecs = x;
if (maxsilence / 1000 >= vmminsecs) {
ast_log(AST_LOG_WARNING, "maxsilence should be less than minmessage or you may get empty messages\n");
@@ -10755,7 +10755,7 @@ static int load_config(int reload)
maxmessage_deprecate = 1;
ast_log(AST_LOG_WARNING, "Setting 'minmessage' has been deprecated in favor of 'minsecs'.\n");
}
- if (sscanf(val, "%d", &x) == 1) {
+ if (sscanf(val, "%30d", &x) == 1) {
vmminsecs = x;
if (maxsilence / 1000 >= vmminsecs) {
ast_log(AST_LOG_WARNING, "maxsilence should be less than minmessage or you may get empty messages\n");
@@ -10772,7 +10772,7 @@ static int load_config(int reload)
skipms = 3000;
if ((val = ast_variable_retrieve(cfg, "general", "maxgreet"))) {
- if (sscanf(val, "%d", &x) == 1) {
+ if (sscanf(val, "%30d", &x) == 1) {
maxgreet = x;
} else {
ast_log(AST_LOG_WARNING, "Invalid max message greeting length\n");
@@ -10780,7 +10780,7 @@ static int load_config(int reload)
}
if ((val = ast_variable_retrieve(cfg, "general", "skipms"))) {
- if (sscanf(val, "%d", &x) == 1) {
+ if (sscanf(val, "%30d", &x) == 1) {
skipms = x;
} else {
ast_log(AST_LOG_WARNING, "Invalid skipms value\n");
@@ -10789,7 +10789,7 @@ static int load_config(int reload)
maxlogins = 3;
if ((val = ast_variable_retrieve(cfg, "general", "maxlogins"))) {
- if (sscanf(val, "%d", &x) == 1) {
+ if (sscanf(val, "%30d", &x) == 1) {
maxlogins = x;
} else {
ast_log(AST_LOG_WARNING, "Invalid max failed login attempts\n");
@@ -10798,7 +10798,7 @@ static int load_config(int reload)
minpassword = MINPASSWORD;
if ((val = ast_variable_retrieve(cfg, "general", "minpassword"))) {
- if (sscanf(val, "%d", &x) == 1) {
+ if (sscanf(val, "%30d", &x) == 1) {
minpassword = x;
} else {
ast_log(AST_LOG_WARNING, "Invalid minimum password length. Default to %d\n", minpassword);
@@ -10894,7 +10894,7 @@ static int load_config(int reload)
saydurationminfo = 2;
if ((val = ast_variable_retrieve(cfg, "general", "saydurationm"))) {
- if (sscanf(val, "%d", &x) == 1) {
+ if (sscanf(val, "%30d", &x) == 1) {
saydurationminfo = x;
} else {
ast_log(AST_LOG_WARNING, "Invalid min duration for say duration\n");
@@ -10959,7 +10959,7 @@ static int load_config(int reload)
poll_freq = DEFAULT_POLL_FREQ;
if ((val = ast_variable_retrieve(cfg, "general", "pollfreq"))) {
- if (sscanf(val, "%u", &poll_freq) != 1) {
+ if (sscanf(val, "%30u", &poll_freq) != 1) {
poll_freq = DEFAULT_POLL_FREQ;
ast_log(AST_LOG_ERROR, "'%s' is not a valid value for the pollfreq option!\n", val);
}
diff --git a/apps/app_waitforring.c b/apps/app_waitforring.c
index 8edd249f5..dfe33db51 100644
--- a/apps/app_waitforring.c
+++ b/apps/app_waitforring.c
@@ -60,7 +60,7 @@ static int waitforring_exec(struct ast_channel *chan, const char *data)
double s;
int ms;
- if (!data || (sscanf(data, "%lg", &s) != 1)) {
+ if (!data || (sscanf(data, "%30lg", &s) != 1)) {
ast_log(LOG_WARNING, "WaitForRing requires an argument (minimum seconds)\n");
return 0;
}
diff --git a/apps/app_waitforsilence.c b/apps/app_waitforsilence.c
index 6339b0192..25e3d071a 100644
--- a/apps/app_waitforsilence.c
+++ b/apps/app_waitforsilence.c
@@ -214,9 +214,9 @@ static int waitfor_exec(struct ast_channel *chan, const char *data, int wait_for
res = ast_answer(chan); /* Answer the channel */
}
- if (!data || ( (sscanf(data, "%d,%d,%d", &timereqd, &iterations, &timeout) != 3) &&
- (sscanf(data, "%d,%d", &timereqd, &iterations) != 2) &&
- (sscanf(data, "%d", &timereqd) != 1) ) ) {
+ if (!data || ( (sscanf(data, "%30d,%30d,%30d", &timereqd, &iterations, &timeout) != 3) &&
+ (sscanf(data, "%30d,%30d", &timereqd, &iterations) != 2) &&
+ (sscanf(data, "%30d", &timereqd) != 1) ) ) {
ast_log(LOG_WARNING, "Using default value of 1000ms, 1 iteration, no timeout\n");
}
diff --git a/apps/app_waituntil.c b/apps/app_waituntil.c
index 9f13157be..04905edc5 100644
--- a/apps/app_waituntil.c
+++ b/apps/app_waituntil.c
@@ -82,7 +82,7 @@ static int waituntil_exec(struct ast_channel *chan, const char *data)
return 0;
}
- if (sscanf(data, "%ld%lf", &seconds, &fraction) == 0) {
+ if (sscanf(data, "%30ld%30lf", &seconds, &fraction) == 0) {
ast_log(LOG_WARNING, "WaitUntil called with non-numeric argument\n");
pbx_builtin_setvar_helper(chan, "WAITUNTILSTATUS", "FAILURE");
return 0;
diff --git a/cdr/cdr_adaptive_odbc.c b/cdr/cdr_adaptive_odbc.c
index 1d3199114..606506db9 100644
--- a/cdr/cdr_adaptive_odbc.c
+++ b/cdr/cdr_adaptive_odbc.c
@@ -460,7 +460,7 @@ static int odbc_log(struct ast_cdr *cdr)
case SQL_TYPE_DATE:
{
int year = 0, month = 0, day = 0;
- if (sscanf(colptr, "%d-%d-%d", &year, &month, &day) != 3 || year <= 0 ||
+ if (sscanf(colptr, "%4d-%2d-%2d", &year, &month, &day) != 3 || year <= 0 ||
month <= 0 || month > 12 || day < 0 || day > 31 ||
((month == 4 || month == 6 || month == 9 || month == 11) && day == 31) ||
(month == 2 && year % 400 == 0 && day > 29) ||
@@ -483,7 +483,7 @@ static int odbc_log(struct ast_cdr *cdr)
case SQL_TYPE_TIME:
{
int hour = 0, minute = 0, second = 0;
- int count = sscanf(colptr, "%d:%d:%d", &hour, &minute, &second);
+ int count = sscanf(colptr, "%2d:%2d:%2d", &hour, &minute, &second);
if ((count != 2 && count != 3) || hour < 0 || hour > 23 || minute < 0 || minute > 59 || second < 0 || second > 59) {
ast_log(LOG_WARNING, "CDR variable %s is not a valid time ('%s').\n", entry->name, colptr);
@@ -499,7 +499,7 @@ static int odbc_log(struct ast_cdr *cdr)
case SQL_TIMESTAMP:
{
int year = 0, month = 0, day = 0, hour = 0, minute = 0, second = 0;
- int count = sscanf(colptr, "%d-%d-%d %d:%d:%d", &year, &month, &day, &hour, &minute, &second);
+ int count = sscanf(colptr, "%4d-%2d-%2d %2d:%2d:%2d", &year, &month, &day, &hour, &minute, &second);
if ((count != 3 && count != 5 && count != 6) || year <= 0 ||
month <= 0 || month > 12 || day < 0 || day > 31 ||
@@ -525,7 +525,7 @@ static int odbc_log(struct ast_cdr *cdr)
case SQL_INTEGER:
{
int integer = 0;
- if (sscanf(colptr, "%d", &integer) != 1) {
+ if (sscanf(colptr, "%30d", &integer) != 1) {
ast_log(LOG_WARNING, "CDR variable %s is not an integer.\n", entry->name);
continue;
}
@@ -538,7 +538,7 @@ static int odbc_log(struct ast_cdr *cdr)
case SQL_BIGINT:
{
long long integer = 0;
- if (sscanf(colptr, "%lld", &integer) != 1) {
+ if (sscanf(colptr, "%30lld", &integer) != 1) {
ast_log(LOG_WARNING, "CDR variable %s is not an integer.\n", entry->name);
continue;
}
@@ -551,7 +551,7 @@ static int odbc_log(struct ast_cdr *cdr)
case SQL_SMALLINT:
{
short integer = 0;
- if (sscanf(colptr, "%hd", &integer) != 1) {
+ if (sscanf(colptr, "%30hd", &integer) != 1) {
ast_log(LOG_WARNING, "CDR variable %s is not an integer.\n", entry->name);
continue;
}
@@ -564,7 +564,7 @@ static int odbc_log(struct ast_cdr *cdr)
case SQL_TINYINT:
{
char integer = 0;
- if (sscanf(colptr, "%hhd", &integer) != 1) {
+ if (sscanf(colptr, "%30hhd", &integer) != 1) {
ast_log(LOG_WARNING, "CDR variable %s is not an integer.\n", entry->name);
continue;
}
@@ -577,7 +577,7 @@ static int odbc_log(struct ast_cdr *cdr)
case SQL_BIT:
{
char integer = 0;
- if (sscanf(colptr, "%hhd", &integer) != 1) {
+ if (sscanf(colptr, "%30hhd", &integer) != 1) {
ast_log(LOG_WARNING, "CDR variable %s is not an integer.\n", entry->name);
continue;
}
@@ -593,7 +593,7 @@ static int odbc_log(struct ast_cdr *cdr)
case SQL_DECIMAL:
{
double number = 0.0;
- if (sscanf(colptr, "%lf", &number) != 1) {
+ if (sscanf(colptr, "%30lf", &number) != 1) {
ast_log(LOG_WARNING, "CDR variable %s is not an numeric type.\n", entry->name);
continue;
}
@@ -608,7 +608,7 @@ static int odbc_log(struct ast_cdr *cdr)
case SQL_DOUBLE:
{
double number = 0.0;
- if (sscanf(colptr, "%lf", &number) != 1) {
+ if (sscanf(colptr, "%30lf", &number) != 1) {
ast_log(LOG_WARNING, "CDR variable %s is not an numeric type.\n", entry->name);
continue;
}
diff --git a/cdr/cdr_pgsql.c b/cdr/cdr_pgsql.c
index 75fb0f854..c5b2b9318 100644
--- a/cdr/cdr_pgsql.c
+++ b/cdr/cdr_pgsql.c
@@ -237,7 +237,7 @@ static int pgsql_log(struct ast_cdr *cdr)
ast_cdr_getvar(cdr, cur->name, &value, buf, sizeof(buf), 0, 0);
if (strncmp(cur->type, "int", 3) == 0) {
long long whatever;
- if (value && sscanf(value, "%lld", &whatever) == 1) {
+ if (value && sscanf(value, "%30lld", &whatever) == 1) {
LENGTHEN_BUF2(26);
ast_str_append(&sql2, 0, "%s%lld", first ? "" : ",", whatever);
} else {
@@ -246,7 +246,7 @@ static int pgsql_log(struct ast_cdr *cdr)
}
} else if (strncmp(cur->type, "float", 5) == 0) {
long double whatever;
- if (value && sscanf(value, "%Lf", &whatever) == 1) {
+ if (value && sscanf(value, "%30Lf", &whatever) == 1) {
LENGTHEN_BUF2(51);
ast_str_append(&sql2, 0, "%s%30Lf", first ? "" : ",", whatever);
} else {
@@ -501,7 +501,7 @@ static int config_module(int reload)
ast_verb(4, "Found column '%s' of type '%s'\n", fname, ftype);
cur = ast_calloc(1, sizeof(*cur) + strlen(fname) + strlen(ftype) + 2);
if (cur) {
- sscanf(flen, "%d", &cur->len);
+ sscanf(flen, "%30d", &cur->len);
cur->name = (char *)cur + sizeof(*cur);
cur->type = (char *)cur + sizeof(*cur) + strlen(fname) + 1;
strcpy(cur->name, fname);
diff --git a/cel/cel_adaptive_odbc.c b/cel/cel_adaptive_odbc.c
index 984f0590f..49a4fff6b 100644
--- a/cel/cel_adaptive_odbc.c
+++ b/cel/cel_adaptive_odbc.c
@@ -503,7 +503,7 @@ static void odbc_log(const struct ast_event *event, void *userdata)
case SQL_TYPE_DATE:
{
int year = 0, month = 0, day = 0;
- if (sscanf(colptr, "%d-%d-%d", &year, &month, &day) != 3 || year <= 0 ||
+ if (sscanf(colptr, "%4d-%2d-%2d", &year, &month, &day) != 3 || year <= 0 ||
month <= 0 || month > 12 || day < 0 || day > 31 ||
((month == 4 || month == 6 || month == 9 || month == 11) && day == 31) ||
(month == 2 && year % 400 == 0 && day > 29) ||
@@ -526,7 +526,7 @@ static void odbc_log(const struct ast_event *event, void *userdata)
case SQL_TYPE_TIME:
{
int hour = 0, minute = 0, second = 0;
- int count = sscanf(colptr, "%d:%d:%d", &hour, &minute, &second);
+ int count = sscanf(colptr, "%2d:%2d:%2d", &hour, &minute, &second);
if ((count != 2 && count != 3) || hour < 0 || hour > 23 || minute < 0 || minute > 59 || second < 0 || second > 59) {
ast_log(LOG_WARNING, "CEL variable %s is not a valid time ('%s').\n", entry->name, colptr);
@@ -542,7 +542,7 @@ static void odbc_log(const struct ast_event *event, void *userdata)
case SQL_TIMESTAMP:
{
int year = 0, month = 0, day = 0, hour = 0, minute = 0, second = 0;
- int count = sscanf(colptr, "%d-%d-%d %d:%d:%d", &year, &month, &day, &hour, &minute, &second);
+ int count = sscanf(colptr, "%4d-%2d-%2d %2d:%2d:%2d", &year, &month, &day, &hour, &minute, &second);
if ((count != 3 && count != 5 && count != 6) || year <= 0 ||
month <= 0 || month > 12 || day < 0 || day > 31 ||
@@ -570,7 +570,7 @@ static void odbc_log(const struct ast_event *event, void *userdata)
int integer = 0;
if (strcasecmp(entry->name, "eventtype") == 0) {
integer = (int) record.event_type;
- } else if (sscanf(colptr, "%d", &integer) != 1) {
+ } else if (sscanf(colptr, "%30d", &integer) != 1) {
ast_log(LOG_WARNING, "CEL variable %s is not an integer.\n", entry->name);
continue;
}
@@ -585,7 +585,7 @@ static void odbc_log(const struct ast_event *event, void *userdata)
long long integer = 0;
if (strcasecmp(entry->name, "eventtype") == 0) {
integer = (long long) record.event_type;
- } else if (sscanf(colptr, "%lld", &integer) != 1) {
+ } else if (sscanf(colptr, "%30lld", &integer) != 1) {
ast_log(LOG_WARNING, "CEL variable %s is not an integer.\n", entry->name);
continue;
}
@@ -600,7 +600,7 @@ static void odbc_log(const struct ast_event *event, void *userdata)
short integer = 0;
if (strcasecmp(entry->name, "eventtype") == 0) {
integer = (short) record.event_type;
- } else if (sscanf(colptr, "%hd", &integer) != 1) {
+ } else if (sscanf(colptr, "%30hd", &integer) != 1) {
ast_log(LOG_WARNING, "CEL variable %s is not an integer.\n", entry->name);
continue;
}
@@ -615,7 +615,7 @@ static void odbc_log(const struct ast_event *event, void *userdata)
char integer = 0;
if (strcasecmp(entry->name, "eventtype") == 0) {
integer = (char) record.event_type;
- } else if (sscanf(colptr, "%hhd", &integer) != 1) {
+ } else if (sscanf(colptr, "%30hhd", &integer) != 1) {
ast_log(LOG_WARNING, "CEL variable %s is not an integer.\n", entry->name);
continue;
}
@@ -630,7 +630,7 @@ static void odbc_log(const struct ast_event *event, void *userdata)
char integer = 0;
if (strcasecmp(entry->name, "eventtype") == 0) {
integer = (char) record.event_type;
- } else if (sscanf(colptr, "%hhd", &integer) != 1) {
+ } else if (sscanf(colptr, "%30hhd", &integer) != 1) {
ast_log(LOG_WARNING, "CEL variable %s is not an integer.\n", entry->name);
continue;
}
@@ -648,7 +648,7 @@ static void odbc_log(const struct ast_event *event, void *userdata)
double number = 0.0;
if (strcasecmp(entry->name, "eventtype") == 0) {
number = (double)record.event_type;
- } else if (sscanf(colptr, "%lf", &number) != 1) {
+ } else if (sscanf(colptr, "%30lf", &number) != 1) {
ast_log(LOG_WARNING, "CEL variable %s is not an numeric type.\n", entry->name);
continue;
}
@@ -665,7 +665,7 @@ static void odbc_log(const struct ast_event *event, void *userdata)
double number = 0.0;
if (strcasecmp(entry->name, "eventtype") == 0) {
number = (double) record.event_type;
- } else if (sscanf(colptr, "%lf", &number) != 1) {
+ } else if (sscanf(colptr, "%30lf", &number) != 1) {
ast_log(LOG_WARNING, "CEL variable %s is not an numeric type.\n", entry->name);
continue;
}
diff --git a/cel/cel_pgsql.c b/cel/cel_pgsql.c
index 8b10261ee..8ca410449 100644
--- a/cel/cel_pgsql.c
+++ b/cel/cel_pgsql.c
@@ -244,7 +244,7 @@ static void pgsql_log(const struct ast_event *event, void *userdata)
}
if (strncmp(cur->type, "int", 3) == 0) {
long long whatever;
- if (value && sscanf(value, "%lld", &whatever) == 1) {
+ if (value && sscanf(value, "%30lld", &whatever) == 1) {
LENGTHEN_BUF2(26);
ast_str_append(&sql2, 0, "%s%lld", SEP, whatever);
} else {
@@ -253,7 +253,7 @@ static void pgsql_log(const struct ast_event *event, void *userdata)
}
} else if (strncmp(cur->type, "float", 5) == 0) {
long double whatever;
- if (value && sscanf(value, "%Lf", &whatever) == 1) {
+ if (value && sscanf(value, "%30Lf", &whatever) == 1) {
LENGTHEN_BUF2(51);
ast_str_append(&sql2, 0, "%s%30Lf", SEP, whatever);
} else {
@@ -493,7 +493,7 @@ static int process_my_load_module(struct ast_config *cfg)
ast_verb(4, "Found column '%s' of type '%s'\n", fname, ftype);
cur = ast_calloc(1, sizeof(*cur) + strlen(fname) + strlen(ftype) + 2);
if (cur) {
- sscanf(flen, "%d", &cur->len);
+ sscanf(flen, "%30d", &cur->len);
cur->name = (char *)cur + sizeof(*cur);
cur->type = (char *)cur + sizeof(*cur) + strlen(fname) + 1;
strcpy(cur->name, fname);
diff --git a/channels/chan_agent.c b/channels/chan_agent.c
index a31a12fdf..d0605eb50 100644
--- a/channels/chan_agent.c
+++ b/channels/chan_agent.c
@@ -1346,9 +1346,9 @@ static struct ast_channel *agent_request(const char *type, int format, const str
struct timeval now;
s = data;
- if ((s[0] == '@') && (sscanf(s + 1, "%d", &groupoff) == 1)) {
+ if ((s[0] == '@') && (sscanf(s + 1, "%30d", &groupoff) == 1)) {
groupmatch = (1 << groupoff);
- } else if ((s[0] == ':') && (sscanf(s + 1, "%d", &groupoff) == 1)) {
+ } else if ((s[0] == ':') && (sscanf(s + 1, "%30d", &groupoff) == 1)) {
groupmatch = (1 << groupoff);
waitforagent = 1;
} else
@@ -2174,9 +2174,9 @@ static int agent_devicestate(void *data)
int res = AST_DEVICE_INVALID;
s = data;
- if ((s[0] == '@') && (sscanf(s + 1, "%d", &groupoff) == 1))
+ if ((s[0] == '@') && (sscanf(s + 1, "%30d", &groupoff) == 1))
groupmatch = (1 << groupoff);
- else if ((s[0] == ':') && (sscanf(s + 1, "%d", &groupoff) == 1)) {
+ else if ((s[0] == ':') && (sscanf(s + 1, "%30d", &groupoff) == 1)) {
groupmatch = (1 << groupoff);
} else
groupmatch = 0;
diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c
index ee05f9539..4a44985af 100644
--- a/channels/chan_dahdi.c
+++ b/channels/chan_dahdi.c
@@ -4658,7 +4658,7 @@ static void destroy_all_channels(void)
snprintf(db_chan_name, sizeof(db_chan_name), "%s/%d:%d", dahdi_db, pl->span, x);
if (!ast_db_get(db_chan_name, SRVST_DBKEY, db_answer, sizeof(db_answer))) {
- sscanf(db_answer, "%c:%d", &state, &why);
+ sscanf(db_answer, "%1c:%30d", &state, &why);
}
if (!why) {
/* SRVST persistence is not required */
@@ -5658,7 +5658,7 @@ static int parse_buffers_policy(const char *parse, int *num_buffers, int *policy
int res;
char policy_str[21] = "";
- if ((res = sscanf(parse, "%d,%20s", num_buffers, policy_str)) != 2) {
+ if ((res = sscanf(parse, "%30d,%20s", num_buffers, policy_str)) != 2) {
ast_log(LOG_WARNING, "Parsing buffer string '%s' failed.\n", parse);
return 1;
}
@@ -10270,7 +10270,7 @@ static unsigned int parse_pointcode(const char *pcstring)
unsigned int code1, code2, code3;
int numvals;
- numvals = sscanf(pcstring, "%d-%d-%d", &code1, &code2, &code3);
+ numvals = sscanf(pcstring, "%30d-%30d-%30d", &code1, &code2, &code3);
if (numvals == 1)
return code1;
if (numvals == 3)
@@ -11274,7 +11274,7 @@ static struct ast_channel *dahdi_request(const char *type, int format, const str
stringp = dest + 1;
s = strsep(&stringp, "/");
- if ((res = sscanf(s, "%d%c%d", &x, &opt, &y)) < 1) {
+ if ((res = sscanf(s, "%30d%1c%30d", &x, &opt, &y)) < 1) {
ast_log(LOG_WARNING, "Unable to determine group for data %s\n", (char *)data);
return NULL;
}
@@ -11309,7 +11309,7 @@ static struct ast_channel *dahdi_request(const char *type, int format, const str
x = CHAN_PSEUDO;
channelmatch = x;
}
- else if ((res = sscanf(s, "%d%c%d", &x, &opt, &y)) < 1) {
+ else if ((res = sscanf(s, "%30d%1c%30d", &x, &opt, &y)) < 1) {
ast_log(LOG_WARNING, "Unable to determine channel for data %s\n", (char *)data);
return NULL;
} else {
@@ -12640,7 +12640,7 @@ static char *handle_pri_service_generic(struct ast_cli_entry *e, int cmd, struct
if (a->argc < 5 || a->argc > 6)
return CLI_SHOWUSAGE;
if ((c = strchr(a->argv[4], ':'))) {
- if (sscanf(a->argv[4], "%d:%d", &trunkgroup, &channel) != 2)
+ if (sscanf(a->argv[4], "%30d:%30d", &trunkgroup, &channel) != 2)
return CLI_SHOWUSAGE;
if ((trunkgroup < 1) || (channel < 1))
return CLI_SHOWUSAGE;
@@ -12685,7 +12685,7 @@ static char *handle_pri_service_generic(struct ast_cli_entry *e, int cmd, struct
why = -1;
snprintf(db_chan_name, sizeof(db_chan_name), "%s/%d:%d", dahdi_db, tmp->span, channel);
if (!ast_db_get(db_chan_name, SRVST_DBKEY, db_answer, sizeof(db_answer))) {
- sscanf(db_answer, "%c:%d", &state, &why);
+ sscanf(db_answer, "%1c:%30d", &state, &why);
ast_db_del(db_chan_name, SRVST_DBKEY);
}
switch(changestatus) {
@@ -14850,9 +14850,9 @@ static int build_channels(struct dahdi_chan_conf *conf, const char *value, int r
c = ast_strdupa(value);
while ((chan = strsep(&c, ","))) {
- if (sscanf(chan, "%d-%d", &start, &finish) == 2) {
+ if (sscanf(chan, "%30d-%30d", &start, &finish) == 2) {
/* Range */
- } else if (sscanf(chan, "%d", &start)) {
+ } else if (sscanf(chan, "%30d", &start)) {
/* Just one */
finish = start;
} else if (!strcasecmp(chan, "pseudo")) {
@@ -14932,7 +14932,7 @@ static void process_echocancel(struct dahdi_chan_conf *confp, const char *data,
strcpy(confp->chan.echocancel.params[confp->chan.echocancel.head.param_count].name, param.name);
if (param.value) {
- if (sscanf(param.value, "%d", &confp->chan.echocancel.params[confp->chan.echocancel.head.param_count].value) != 1) {
+ if (sscanf(param.value, "%30d", &confp->chan.echocancel.params[confp->chan.echocancel.head.param_count].value) != 1) {
ast_log(LOG_WARNING, "Invalid echocancel parameter value supplied at line %d: '%s'\n", line, param.value);
continue;
}
@@ -15000,11 +15000,11 @@ static int process_dahdi(struct dahdi_chan_conf *confp, const char *cat, struct
} else if (!strcasecmp(v->name, "dring3range")) {
confp->chan.drings.ringnum[2].range = atoi(v->value);
} else if (!strcasecmp(v->name, "dring1")) {
- sscanf(v->value, "%d,%d,%d", &confp->chan.drings.ringnum[0].ring[0], &confp->chan.drings.ringnum[0].ring[1], &confp->chan.drings.ringnum[0].ring[2]);
+ sscanf(v->value, "%30d,%30d,%30d", &confp->chan.drings.ringnum[0].ring[0], &confp->chan.drings.ringnum[0].ring[1], &confp->chan.drings.ringnum[0].ring[2]);
} else if (!strcasecmp(v->name, "dring2")) {
- sscanf(v->value,"%d,%d,%d", &confp->chan.drings.ringnum[1].ring[0], &confp->chan.drings.ringnum[1].ring[1], &confp->chan.drings.ringnum[1].ring[2]);
+ sscanf(v->value, "%30d,%30d,%30d", &confp->chan.drings.ringnum[1].ring[0], &confp->chan.drings.ringnum[1].ring[1], &confp->chan.drings.ringnum[1].ring[2]);
} else if (!strcasecmp(v->name, "dring3")) {
- sscanf(v->value, "%d,%d,%d", &confp->chan.drings.ringnum[2].ring[0], &confp->chan.drings.ringnum[2].ring[1], &confp->chan.drings.ringnum[2].ring[2]);
+ sscanf(v->value, "%30d,%30d,%30d", &confp->chan.drings.ringnum[2].ring[0], &confp->chan.drings.ringnum[2].ring[1], &confp->chan.drings.ringnum[2].ring[2]);
} else if (!strcasecmp(v->name, "usecallerid")) {
confp->chan.use_callerid = ast_true(v->value);
} else if (!strcasecmp(v->name, "cidsignalling")) {
@@ -15061,7 +15061,7 @@ static int process_dahdi(struct dahdi_chan_conf *confp, const char *cat, struct
} else if (!strcasecmp(v->name, "busycount")) {
confp->chan.busycount = atoi(v->value);
} else if (!strcasecmp(v->name, "busypattern")) {
- if (sscanf(v->value, "%d,%d", &confp->chan.busy_tonelength, &confp->chan.busy_quietlength) != 2) {
+ if (sscanf(v->value, "%30d,%30d", &confp->chan.busy_tonelength, &confp->chan.busy_quietlength) != 2) {
ast_log(LOG_ERROR, "busypattern= expects busypattern=tonelength,quietlength at line %d.\n", v->lineno);
}
} else if (!strcasecmp(v->name, "callprogress")) {
@@ -15081,7 +15081,7 @@ static int process_dahdi(struct dahdi_chan_conf *confp, const char *cat, struct
} else if (!strcasecmp(v->name, "echocancel")) {
process_echocancel(confp, v->value, v->lineno);
} else if (!strcasecmp(v->name, "echotraining")) {
- if (sscanf(v->value, "%d", &y) == 1) {
+ if (sscanf(v->value, "%30d", &y) == 1) {
if ((y < 10) || (y > 4000)) {
ast_log(LOG_WARNING, "Echo training time must be within the range of 10 to 4000 ms at line %d.\n", v->lineno);
} else {
@@ -15165,19 +15165,19 @@ static int process_dahdi(struct dahdi_chan_conf *confp, const char *cat, struct
confp->chan.mwimonitor_fsk = 1;
}
} else if (!strcasecmp(v->name, "cid_rxgain")) {
- if (sscanf(v->value, "%f", &confp->chan.cid_rxgain) != 1) {
+ if (sscanf(v->value, "%30f", &confp->chan.cid_rxgain) != 1) {
ast_log(LOG_WARNING, "Invalid cid_rxgain: %s at line %d.\n", v->value, v->lineno);
}
} else if (!strcasecmp(v->name, "rxgain")) {
- if (sscanf(v->value, "%f", &confp->chan.rxgain) != 1) {
+ if (sscanf(v->value, "%30f", &confp->chan.rxgain) != 1) {
ast_log(LOG_WARNING, "Invalid rxgain: %s at line %d.\n", v->value, v->lineno);
}
} else if (!strcasecmp(v->name, "txgain")) {
- if (sscanf(v->value, "%f", &confp->chan.txgain) != 1) {
+ if (sscanf(v->value, "%30f", &confp->chan.txgain) != 1) {
ast_log(LOG_WARNING, "Invalid txgain: %s at line %d.\n", v->value, v->lineno);
}
} else if (!strcasecmp(v->name, "tonezone")) {
- if (sscanf(v->value, "%d", &confp->chan.tonezone) != 1) {
+ if (sscanf(v->value, "%30d", &confp->chan.tonezone) != 1) {
ast_log(LOG_WARNING, "Invalid tonezone: %s at line %d.\n", v->value, v->lineno);
}
} else if (!strcasecmp(v->name, "callerid")) {
@@ -15743,7 +15743,7 @@ static int process_dahdi(struct dahdi_chan_conf *confp, const char *cat, struct
ast_copy_string(original_args, v->value, sizeof(original_args));
/* 16 cadences allowed (8 pairs) */
- element_count = sscanf(v->value, "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d", &c[0], &c[1], &c[2], &c[3], &c[4], &c[5], &c[6], &c[7], &c[8], &c[9], &c[10], &c[11], &c[12], &c[13], &c[14], &c[15]);
+ element_count = sscanf(v->value, "%30d,%30d,%30d,%30d,%30d,%30d,%30d,%30d,%30d,%30d,%30d,%30d,%30d,%30d,%30d,%30d", &c[0], &c[1], &c[2], &c[3], &c[4], &c[5], &c[6], &c[7], &c[8], &c[9], &c[10], &c[11], &c[12], &c[13], &c[14], &c[15]);
/* Cadence must be even (on/off) */
if (element_count % 2 == 1) {
diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c
index 381c99502..1ef01452c 100644
--- a/channels/chan_iax2.c
+++ b/channels/chan_iax2.c
@@ -11072,18 +11072,18 @@ static struct iax2_peer *build_peer(const char *name, struct ast_variable *v, st
peer->maxms = 0;
} else if (!strcasecmp(v->value, "yes")) {
peer->maxms = DEFAULT_MAXMS;
- } else if (sscanf(v->value, "%d", &peer->maxms) != 1) {
+ } else if (sscanf(v->value, "%30d", &peer->maxms) != 1) {
ast_log(LOG_WARNING, "Qualification of peer '%s' should be 'yes', 'no', or a number of milliseconds at line %d of iax.conf\n", peer->name, v->lineno);
peer->maxms = 0;
}
} else if (!strcasecmp(v->name, "qualifysmoothing")) {
peer->smoothing = ast_true(v->value);
} else if (!strcasecmp(v->name, "qualifyfreqok")) {
- if (sscanf(v->value, "%d", &peer->pokefreqok) != 1) {
+ if (sscanf(v->value, "%30d", &peer->pokefreqok) != 1) {
ast_log(LOG_WARNING, "Qualification testing frequency of peer '%s' when OK should a number of milliseconds at line %d of iax.conf\n", peer->name, v->lineno);
}
} else if (!strcasecmp(v->name, "qualifyfreqnotok")) {
- if (sscanf(v->value, "%d", &peer->pokefreqnotok) != 1) {
+ if (sscanf(v->value, "%30d", &peer->pokefreqnotok) != 1) {
ast_log(LOG_WARNING, "Qualification testing frequency of peer '%s' when NOT OK should be a number of milliseconds at line %d of iax.conf\n", peer->name, v->lineno);
} else ast_log(LOG_WARNING, "Set peer->pokefreqnotok to %d\n", peer->pokefreqnotok);
} else if (!strcasecmp(v->name, "timezone")) {
@@ -11720,7 +11720,7 @@ static int set_config(char *config_file, int reload)
if (trunkmaxsize == 0)
trunkmaxsize = MAX_TRUNKDATA;
} else if (!strcasecmp(v->name, "autokill")) {
- if (sscanf(v->value, "%d", &x) == 1) {
+ if (sscanf(v->value, "%30d", &x) == 1) {
if (x >= 0)
autokill = x;
else
diff --git a/channels/chan_mgcp.c b/channels/chan_mgcp.c
index 8adaf12a3..d74fc9daf 100644
--- a/channels/chan_mgcp.c
+++ b/channels/chan_mgcp.c
@@ -1866,7 +1866,7 @@ static int process_sdp(struct mgcp_subchannel *sub, struct mgcp_request *req)
ast_log(LOG_WARNING, "Unable to lookup host in c= line, '%s'\n", c);
return -1;
}
- if (sscanf(m, "audio %d RTP/AVP %n", &portno, &len) != 1) {
+ if (sscanf(m, "audio %30d RTP/AVP %n", &portno, &len) != 1) {
ast_log(LOG_WARNING, "Unable to determine port number for RTP in '%s'\n", m);
return -1;
}
@@ -1881,7 +1881,7 @@ static int process_sdp(struct mgcp_subchannel *sub, struct mgcp_request *req)
ast_rtp_codecs_payloads_clear(ast_rtp_instance_get_codecs(sub->rtp), sub->rtp);
codecs = ast_strdupa(m + len);
while (!ast_strlen_zero(codecs)) {
- if (sscanf(codecs, "%d%n", &codec, &len) != 1) {
+ if (sscanf(codecs, "%30d%n", &codec, &len) != 1) {
if (codec_count)
break;
ast_log(LOG_WARNING, "Error in codec string '%s' at '%s'\n", m, codecs);
@@ -1897,7 +1897,7 @@ static int process_sdp(struct mgcp_subchannel *sub, struct mgcp_request *req)
sdpLineNum_iterator_init(&iterator);
while ((a = get_sdp_iterate(&iterator, req, "a"))[0] != '\0') {
char* mimeSubtype = ast_strdupa(a); /* ensures we have enough space */
- if (sscanf(a, "rtpmap: %u %[^/]/", &codec, mimeSubtype) != 2)
+ if (sscanf(a, "rtpmap: %30u %127[^/]/", &codec, mimeSubtype) != 2)
continue;
/* Note: should really look at the 'freq' and '#chans' params too */
ast_rtp_codecs_payloads_set_rtpmap_type(ast_rtp_instance_get_codecs(sub->rtp), sub->rtp, codec, "audio", mimeSubtype, 0);
@@ -2030,7 +2030,7 @@ static int transmit_response(struct mgcp_subchannel *sub, char *msg, struct mgcp
mgr = ast_calloc(1, sizeof(*mgr) + resp.len + 1);
if (mgr) {
/* Store MGCP response in case we have to retransmit */
- sscanf(req->identifier, "%d", &mgr->seqno);
+ sscanf(req->identifier, "%30d", &mgr->seqno);
time(&mgr->whensent);
mgr->len = resp.len;
memcpy(mgr->buf, resp.data, resp.len);
@@ -3259,7 +3259,7 @@ static int find_and_retrans(struct mgcp_subchannel *sub, struct mgcp_request *re
time_t now;
struct mgcp_response *prev = NULL, *cur, *next, *answer=NULL;
time(&now);
- if (sscanf(req->identifier, "%d", &seqno) != 1)
+ if (sscanf(req->identifier, "%30d", &seqno) != 1)
seqno = 0;
cur = sub->parent->parent->responses;
while(cur) {
@@ -3317,7 +3317,7 @@ static int mgcpsock_read(int *id, int fd, short events, void *ignore)
return 1;
}
- if (sscanf(req.verb, "%d", &result) && sscanf(req.identifier, "%d", &ident)) {
+ if (sscanf(req.verb, "%30d", &result) && sscanf(req.identifier, "%30d", &ident)) {
/* Try to find who this message is for, if it's important */
sub = find_subchannel_and_lock(NULL, ident, &sin);
if (sub) {
@@ -4142,7 +4142,7 @@ static int reload_config(int reload)
if (ast_str2cos(v->value, &qos.cos_audio))
ast_log(LOG_WARNING, "Invalid cos_audio value at line %d, refer to QoS documentation\n", v->lineno);
} else if (!strcasecmp(v->name, "port")) {
- if (sscanf(v->value, "%d", &ourport) == 1) {
+ if (sscanf(v->value, "%5d", &ourport) == 1) {
bindaddr.sin_port = htons(ourport);
} else {
ast_log(LOG_WARNING, "Invalid port number '%s' at line %d of %s\n", v->value, v->lineno, config);
diff --git a/channels/chan_misdn.c b/channels/chan_misdn.c
index a85392eed..a26bdacd6 100644
--- a/channels/chan_misdn.c
+++ b/channels/chan_misdn.c
@@ -3979,7 +3979,7 @@ static char *handle_cli_misdn_show_config(struct ast_cli_entry *e, int cmd, stru
ok = 1;
}
return ok ? CLI_SUCCESS : CLI_SHOWUSAGE;
- } else if (!sscanf(a->argv[3], "%d", &onlyport) || onlyport < 0) {
+ } else if (!sscanf(a->argv[3], "%5d", &onlyport) || onlyport < 0) {
ast_cli(a->fd, "Unknown option: %s\n", a->argv[3]);
return CLI_SHOWUSAGE;
}
diff --git a/channels/chan_oss.c b/channels/chan_oss.c
index a58c4b6d4..d7b6cc3f4 100644
--- a/channels/chan_oss.c
+++ b/channels/chan_oss.c
@@ -1235,7 +1235,7 @@ static char *console_active(struct ast_cli_entry *e, int cmd, struct ast_cli_arg
static void store_boost(struct chan_oss_pvt *o, const char *s)
{
double boost = 0;
- if (sscanf(s, "%lf", &boost) != 1) {
+ if (sscanf(s, "%30lf", &boost) != 1) {
ast_log(LOG_WARNING, "invalid boost <%s>\n", s);
return;
}
diff --git a/channels/chan_phone.c b/channels/chan_phone.c
index d3131210c..6e0029199 100644
--- a/channels/chan_phone.c
+++ b/channels/chan_phone.c
@@ -1259,7 +1259,7 @@ static int parse_gain_value(const char *gain_type, const char *value)
float gain;
/* try to scan number */
- if (sscanf(value, "%f", &gain) != 1)
+ if (sscanf(value, "%30f", &gain) != 1)
{
ast_log(LOG_ERROR, "Invalid %s value '%s' in '%s' config\n",
value, gain_type, config);
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index ef470bd46..638a381d8 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -2924,7 +2924,7 @@ static void *_sip_tcp_helper_thread(struct sip_pvt *pvt, struct ast_tcptls_sessi
copy_request(&reqcpy, &req);
parse_request(&reqcpy);
/* In order to know how much to read, we need the content-length header */
- if (sscanf(get_header(&reqcpy, "Content-Length"), "%d", &cl)) {
+ if (sscanf(get_header(&reqcpy, "Content-Length"), "%30d", &cl)) {
while (cl > 0) {
ast_mutex_lock(&tcptls_session->lock);
if (!fread(buf, (cl < sizeof(buf)) ? cl : sizeof(buf), 1, tcptls_session->f)) {
@@ -3754,7 +3754,7 @@ static enum sip_result __sip_reliable_xmit(struct sip_pvt *p, int seqno, int res
p->packets = pkt; /* Add it to the queue */
if (resp) {
/* Parse out the response code */
- if (sscanf(ast_str_buffer(pkt->data), "SIP/2.0 %d", &respid) == 1) {
+ if (sscanf(ast_str_buffer(pkt->data), "SIP/2.0 %30d", &respid) == 1) {
pkt->response_code = respid;
}
}
@@ -3805,10 +3805,10 @@ static int __sip_autodestruct(const void *data)
/* If there are packets still waiting for delivery, delay the destruction */
if (p->packets) {
if (!p->needdestroy) {
- char method_str[30];
+ char method_str[31];
ast_debug(3, "Re-scheduled destruction of SIP call %s\n", p->callid ? p->callid : "<unknown>");
append_history(p, "ReliableXmit", "timeout");
- if (sscanf(p->lastmsg, "Tx: %s", method_str) == 1 || sscanf(p->lastmsg, "Rx: %s", method_str) == 1) {
+ if (sscanf(p->lastmsg, "Tx: %30s", method_str) == 1 || sscanf(p->lastmsg, "Rx: %30s", method_str) == 1) {
if (method_match(SIP_CANCEL, method_str) || method_match(SIP_BYE, method_str)) {
pvt_set_needdestroy(p, "autodestruct");
}
@@ -5215,7 +5215,7 @@ static int create_addr(struct sip_pvt *dialog, const char *opeer, struct sockadd
/* This address should be updated using dnsmgr */
memcpy(&dialog->sa.sin_addr, &sin->sin_addr, sizeof(dialog->sa.sin_addr));
if (!sin->sin_port) {
- if (ast_strlen_zero(port) || sscanf(port, "%u", &portno) != 1) {
+ if (ast_strlen_zero(port) || sscanf(port, "%30u", &portno) != 1) {
portno = (dialog->socket.type & SIP_TRANSPORT_TLS) ?
STANDARD_TLS_PORT : STANDARD_SIP_PORT;
}
@@ -7771,7 +7771,7 @@ static int find_sdp(struct sip_request *req)
content_length = get_header(req, "Content-Length");
if (!ast_strlen_zero(content_length)) {
- if (sscanf(content_length, "%ud", &x) != 1) {
+ if (sscanf(content_length, "%30u", &x) != 1) {
ast_log(LOG_WARNING, "Invalid Content-Length: %s\n", content_length);
return 0;
}
@@ -7876,10 +7876,10 @@ static int get_ip_and_port_from_sdp(struct sip_request *req, const enum media_ty
}
/* We only want the m and c lines for audio */
for (m = get_sdp_iterate(&miterator, req, "m"); !ast_strlen_zero(m); m = get_sdp_iterate(&miterator, req, "m")) {
- if ((media == SDP_AUDIO && ((sscanf(m, "audio %d/%d RTP/AVP %n", &x, &numberofports, &len) == 2 && len > 0) ||
- (sscanf(m, "audio %d RTP/AVP %n", &x, &len) == 1 && len > 0))) ||
- (media == SDP_VIDEO && ((sscanf(m, "video %d/%d RTP/AVP %n", &x, &numberofports, &len) == 2 && len > 0) ||
- (sscanf(m, "video %d RTP/AVP %n", &x, &len) == 1 && len > 0)))) {
+ if ((media == SDP_AUDIO && ((sscanf(m, "audio %30d/%30d RTP/AVP %n", &x, &numberofports, &len) == 2 && len > 0) ||
+ (sscanf(m, "audio %30d RTP/AVP %n", &x, &len) == 1 && len > 0))) ||
+ (media == SDP_VIDEO && ((sscanf(m, "video %30d/%30d RTP/AVP %n", &x, &numberofports, &len) == 2 && len > 0) ||
+ (sscanf(m, "video %30d RTP/AVP %n", &x, &len) == 1 && len > 0)))) {
/* See if there's a c= line for this media stream.
* XXX There is no guarantee that we'll be grabbing the c= line for this
* particular media stream here. However, this is the same logic used in process_sdp.
@@ -8016,7 +8016,7 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req, int t38action
ast_log(LOG_WARNING, "SDP syntax error in o= line\n");
return -1;
}
- if (!sscanf(token, "%" SCNd64, &rua_version)) {
+ if (!sscanf(token, "%30" SCNd64, &rua_version)) {
ast_log(LOG_WARNING, "SDP syntax error in o= line version\n");
return -1;
}
@@ -8102,8 +8102,8 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req, int t38action
numberofports = 1;
len = -1;
- if ((sscanf(m, "audio %d/%d RTP/AVP %n", &x, &numberofports, &len) == 2 && len > 0) ||
- (sscanf(m, "audio %d RTP/AVP %n", &x, &len) == 1 && len > 0)) {
+ if ((sscanf(m, "audio %30d/%30d RTP/AVP %n", &x, &numberofports, &len) == 2 && len > 0) ||
+ (sscanf(m, "audio %30d RTP/AVP %n", &x, &len) == 1 && len > 0)) {
audio = TRUE;
p->offered_media[SDP_AUDIO].offered = TRUE;
numberofmediastreams++;
@@ -8113,7 +8113,7 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req, int t38action
codecs = m + len;
ast_copy_string(p->offered_media[SDP_AUDIO].text, codecs, sizeof(p->offered_media[SDP_AUDIO].text));
for (; !ast_strlen_zero(codecs); codecs = ast_skip_blanks(codecs + len)) {
- if (sscanf(codecs, "%d%n", &codec, &len) != 1) {
+ if (sscanf(codecs, "%30d%n", &codec, &len) != 1) {
ast_log(LOG_WARNING, "Error in codec string '%s'\n", codecs);
return -1;
}
@@ -8122,8 +8122,8 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req, int t38action
ast_rtp_codecs_payloads_set_m_type(&newaudiortp, NULL, codec);
}
- } else if ((sscanf(m, "video %d/%d RTP/AVP %n", &x, &numberofports, &len) == 2 && len > 0) ||
- (sscanf(m, "video %d RTP/AVP %n", &x, &len) == 1 && len >= 0)) {
+ } else if ((sscanf(m, "video %30d/%30d RTP/AVP %n", &x, &numberofports, &len) == 2 && len > 0) ||
+ (sscanf(m, "video %30d RTP/AVP %n", &x, &len) == 1 && len >= 0)) {
video = TRUE;
p->novideo = FALSE;
p->offered_media[SDP_VIDEO].offered = TRUE;
@@ -8133,7 +8133,7 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req, int t38action
codecs = m + len;
ast_copy_string(p->offered_media[SDP_VIDEO].text, codecs, sizeof(p->offered_media[SDP_VIDEO].text));
for (; !ast_strlen_zero(codecs); codecs = ast_skip_blanks(codecs + len)) {
- if (sscanf(codecs, "%d%n", &codec, &len) != 1) {
+ if (sscanf(codecs, "%30d%n", &codec, &len) != 1) {
ast_log(LOG_WARNING, "Error in codec string '%s'\n", codecs);
return -1;
}
@@ -8141,8 +8141,8 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req, int t38action
ast_verbose("Found RTP video format %d\n", codec);
ast_rtp_codecs_payloads_set_m_type(&newvideortp, NULL, codec);
}
- } else if ((sscanf(m, "text %d/%d RTP/AVP %n", &x, &numberofports, &len) == 2 && len > 0) ||
- (sscanf(m, "text %d RTP/AVP %n", &x, &len) == 1 && len > 0)) {
+ } else if ((sscanf(m, "text %30d/%30d RTP/AVP %n", &x, &numberofports, &len) == 2 && len > 0) ||
+ (sscanf(m, "text %30d RTP/AVP %n", &x, &len) == 1 && len > 0)) {
text = TRUE;
p->offered_media[SDP_TEXT].offered = TRUE;
p->notext = FALSE;
@@ -8152,7 +8152,7 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req, int t38action
codecs = m + len;
ast_copy_string(p->offered_media[SDP_TEXT].text, codecs, sizeof(p->offered_media[SDP_TEXT].text));
for (; !ast_strlen_zero(codecs); codecs = ast_skip_blanks(codecs + len)) {
- if (sscanf(codecs, "%d%n", &codec, &len) != 1) {
+ if (sscanf(codecs, "%30d%n", &codec, &len) != 1) {
ast_log(LOG_WARNING, "Error in codec string '%s'\n", codecs);
return -1;
}
@@ -8160,8 +8160,8 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req, int t38action
ast_verbose("Found RTP text format %d\n", codec);
ast_rtp_codecs_payloads_set_m_type(&newtextrtp, NULL, codec);
}
- } else if (p->udptl && ( (sscanf(m, "image %d udptl t38%n", &x, &len) == 1 && len > 0) ||
- (sscanf(m, "image %d UDPTL t38%n", &x, &len) == 1 && len > 0) )) {
+ } else if (p->udptl && ( (sscanf(m, "image %30d udptl t38%n", &x, &len) == 1 && len > 0) ||
+ (sscanf(m, "image %30d UDPTL t38%n", &x, &len) == 1 && len > 0) )) {
if (debug)
ast_verbose("Got T.38 offer in SDP in dialog %s\n", p->callid);
p->offered_media[SDP_IMAGE].offered = TRUE;
@@ -8358,17 +8358,17 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req, int t38action
red_cp = &red_fmtp[strlen(red_fmtp)];
strncpy(red_fmtp, a, 100);
- sscanf(red_cp, "%u", &red_data_pt[red_num_gen]);
+ sscanf(red_cp, "%30u", &red_data_pt[red_num_gen]);
red_cp = strtok(red_cp, "/");
while (red_cp && red_num_gen++ < AST_RED_MAX_GENERATION) {
- sscanf(red_cp, "%u", &red_data_pt[red_num_gen]);
+ sscanf(red_cp, "%30u", &red_data_pt[red_num_gen]);
red_cp = strtok(NULL, "/");
}
red_cp = red_fmtp;
continue;
}
- if (sscanf(a, "fmtp: %u %63s", &codec, fmtp_string) == 2) {
+ if (sscanf(a, "fmtp: %30u %63s", &codec, fmtp_string) == 2) {
struct ast_rtp_payload_type payload;
unsigned int handled = 0;
@@ -8382,7 +8382,7 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req, int t38action
switch (payload.code) {
case AST_FORMAT_SIREN7:
- if (sscanf(fmtp_string, "bitrate=%u", &bit_rate) == 1) {
+ if (sscanf(fmtp_string, "bitrate=%30u", &bit_rate) == 1) {
if (bit_rate != 32000) {
ast_log(LOG_WARNING, "Got Siren7 offer at %d bps, but only 32000 bps supported; ignoring.\n", bit_rate);
ast_rtp_codecs_payloads_unset(&newaudiortp, NULL, codec);
@@ -8392,7 +8392,7 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req, int t38action
}
break;
case AST_FORMAT_SIREN14:
- if (sscanf(fmtp_string, "bitrate=%u", &bit_rate) == 1) {
+ if (sscanf(fmtp_string, "bitrate=%30u", &bit_rate) == 1) {
if (bit_rate != 48000) {
ast_log(LOG_WARNING, "Got Siren14 offer at %d bps, but only 48000 bps supported; ignoring.\n", bit_rate);
ast_rtp_codecs_payloads_unset(&newaudiortp, NULL, codec);
@@ -8410,7 +8410,7 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req, int t38action
continue;
}
- if (sscanf(a, "rtpmap: %u %127[^/]/%u", &codec, mimeSubtype, &sample_rate) == 3) {
+ if (sscanf(a, "rtpmap: %30u %127[^/]/%30u", &codec, mimeSubtype, &sample_rate) == 3) {
/* We have a rtpmap to handle */
if (last_rtpmap_codec < SDP_MAX_RTPMAP_CODECS) {
@@ -8472,10 +8472,10 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req, int t38action
/* Scan trough the a= lines for T38 attributes and set apropriate fileds */
iterator = req->sdp_start;
while ((a = get_sdp_iterate(&iterator, req, "a"))[0] != '\0') {
- if ((sscanf(a, "T38FaxMaxBuffer:%d", &x) == 1)) {
+ if ((sscanf(a, "T38FaxMaxBuffer:%30d", &x) == 1)) {
found = 1;
ast_debug(3, "MaxBufferSize:%d\n", x);
- } else if ((sscanf(a, "T38MaxBitRate:%d", &x) == 1) || (sscanf(a, "T38FaxMaxRate:%d", &x) == 1)) {
+ } else if ((sscanf(a, "T38MaxBitRate:%30d", &x) == 1) || (sscanf(a, "T38FaxMaxRate:%30d", &x) == 1)) {
found = 1;
ast_debug(3, "T38MaxBitRate: %d\n", x);
switch (x) {
@@ -8498,17 +8498,17 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req, int t38action
p->t38.their_parms.rate = AST_T38_RATE_2400;
break;
}
- } else if ((sscanf(a, "T38FaxVersion:%d", &x) == 1)) {
+ } else if ((sscanf(a, "T38FaxVersion:%30d", &x) == 1)) {
found = 1;
ast_debug(3, "FaxVersion: %d\n", x);
p->t38.their_parms.version = x;
- } else if ((sscanf(a, "T38FaxMaxDatagram:%d", &x) == 1) || (sscanf(a, "T38MaxDatagram:%d", &x) == 1)) {
+ } else if ((sscanf(a, "T38FaxMaxDatagram:%30d", &x) == 1) || (sscanf(a, "T38MaxDatagram:%30d", &x) == 1)) {
found = 1;
ast_debug(3, "FaxMaxDatagram: %d\n", x);
ast_udptl_set_far_max_datagram(p->udptl, x);
} else if ((strncmp(a, "T38FaxFillBitRemoval", 20) == 0)) {
found = 1;
- if (sscanf(a, "T38FaxFillBitRemoval:%d", &x) == 1) {
+ if (sscanf(a, "T38FaxFillBitRemoval:%30d", &x) == 1) {
ast_debug(3, "FillBitRemoval: %d\n", x);
if (x == 1) {
p->t38.their_parms.fill_bit_removal = TRUE;
@@ -8519,7 +8519,7 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req, int t38action
}
} else if ((strncmp(a, "T38FaxTranscodingMMR", 20) == 0)) {
found = 1;
- if (sscanf(a, "T38FaxTranscodingMMR:%d", &x) == 1) {
+ if (sscanf(a, "T38FaxTranscodingMMR:%30d", &x) == 1) {
ast_debug(3, "Transcoding MMR: %d\n", x);
if (x == 1) {
p->t38.their_parms.transcoding_mmr = TRUE;
@@ -8530,7 +8530,7 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req, int t38action
}
} else if ((strncmp(a, "T38FaxTranscodingJBIG", 21) == 0)) {
found = 1;
- if (sscanf(a, "T38FaxTranscodingJBIG:%d", &x) == 1) {
+ if (sscanf(a, "T38FaxTranscodingJBIG:%30d", &x) == 1) {
ast_debug(3, "Transcoding JBIG: %d\n", x);
if (x == 1) {
p->t38.their_parms.transcoding_jbig = TRUE;
@@ -9297,7 +9297,7 @@ static int __transmit_response(struct sip_pvt *p, const char *msg, const struct
struct sip_request resp;
int seqno = 0;
- if (reliable && (sscanf(get_header(req, "CSeq"), "%d ", &seqno) != 1)) {
+ if (reliable && (sscanf(get_header(req, "CSeq"), "%30d ", &seqno) != 1)) {
ast_log(LOG_WARNING, "Unable to determine sequence number from '%s'\n", get_header(req, "CSeq"));
return -1;
}
@@ -9473,7 +9473,7 @@ static int transmit_response_with_auth(struct sip_pvt *p, const char *msg, const
char tmp[512];
int seqno = 0;
- if (reliable && (sscanf(get_header(req, "CSeq"), "%d ", &seqno) != 1)) {
+ if (reliable && (sscanf(get_header(req, "CSeq"), "%30d ", &seqno) != 1)) {
ast_log(LOG_WARNING, "Unable to determine sequence number from '%s'\n", get_header(req, "CSeq"));
return -1;
}
@@ -10185,7 +10185,7 @@ static int transmit_response_with_t38_sdp(struct sip_pvt *p, char *msg, struct s
struct sip_request resp;
int seqno;
- if (sscanf(get_header(req, "CSeq"), "%d ", &seqno) != 1) {
+ if (sscanf(get_header(req, "CSeq"), "%30d ", &seqno) != 1) {
ast_log(LOG_WARNING, "Unable to get seqno from '%s'\n", get_header(req, "CSeq"));
return -1;
}
@@ -10230,7 +10230,7 @@ static int transmit_response_with_sdp(struct sip_pvt *p, const char *msg, const
{
struct sip_request resp;
int seqno;
- if (sscanf(get_header(req, "CSeq"), "%d ", &seqno) != 1) {
+ if (sscanf(get_header(req, "CSeq"), "%30d ", &seqno) != 1) {
ast_log(LOG_WARNING, "Unable to get seqno from '%s'\n", get_header(req, "CSeq"));
return -1;
}
@@ -12103,7 +12103,7 @@ static enum parse_register_result parse_register_contact(struct sip_pvt *pvt, st
char *s = strcasestr(contact, ";expires=");
if (s) {
expires = strsep(&s, ";"); /* trim ; and beyond */
- if (sscanf(expires + 9, "%d", &expire) != 1)
+ if (sscanf(expires + 9, "%30d", &expire) != 1)
expire = default_expiry;
} else {
/* Nothing has been specified */
@@ -17149,7 +17149,7 @@ static int func_header_read(struct ast_channel *chan, const char *function, char
if (!args.number) {
number = 1;
} else {
- sscanf(args.number, "%d", &number);
+ sscanf(args.number, "%30d", &number);
if (number < 1)
number = 1;
}
@@ -18331,7 +18331,7 @@ static int handle_response_register(struct sip_pvt *p, int resp, const char *res
}
tmptmp = strcasestr(contact, "expires=");
if (tmptmp) {
- if (sscanf(tmptmp + 8, "%d;", &expires) != 1)
+ if (sscanf(tmptmp + 8, "%30d;", &expires) != 1)
expires = 0;
}
@@ -21832,7 +21832,7 @@ static int handle_incoming(struct sip_pvt *p, struct sip_request *req, struct so
ast_log(LOG_ERROR, "Missing Cseq. Dropping this SIP message, it's incomplete.\n");
error = 1;
}
- if (!error && sscanf(cseq, "%d%n", &seqno, &len) != 1) {
+ if (!error && sscanf(cseq, "%30d%n", &seqno, &len) != 1) {
ast_log(LOG_ERROR, "No seqno in '%s'. Dropping incomplete message.\n", cmd);
error = 1;
}
@@ -21863,7 +21863,7 @@ static int handle_incoming(struct sip_pvt *p, struct sip_request *req, struct so
if (ast_strlen_zero(e)) {
return 0;
}
- if (sscanf(e, "%d %n", &respid, &len) != 1) {
+ if (sscanf(e, "%30d %n", &respid, &len) != 1) {
ast_log(LOG_WARNING, "Invalid response: '%s'\n", e);
return 0;
}
@@ -22427,7 +22427,7 @@ static int sip_parse_host(char *line, int lineno, char **hostname, int *portnum,
if ((port = strrchr(line, ':'))) {
*port++ = '\0';
- if (!sscanf(port, "%u", portnum)) {
+ if (!sscanf(port, "%5u", portnum)) {
ast_log(LOG_NOTICE, "'%s' is not a valid port number on line %d of sip.conf. using default.\n", port, lineno);
port = NULL;
}
@@ -22831,7 +22831,7 @@ int parse_minse (const char *p_hdrval, int *const p_interval)
*p_interval = 0;
p_hdrval = ast_skip_blanks(p_hdrval);
- if (!sscanf(p_hdrval, "%d", p_interval)) {
+ if (!sscanf(p_hdrval, "%30d", p_interval)) {
ast_log(LOG_WARNING, "Parsing of Min-SE header failed %s\n", p_hdrval);
return -1;
}
@@ -22861,7 +22861,7 @@ int parse_session_expires(const char *p_hdrval, int *const p_interval, enum st_r
while ((p_token = strsep(&p_se_hdr, ";"))) {
p_token = ast_skip_blanks(p_token);
- if (!sscanf(p_token, "%d", p_interval)) {
+ if (!sscanf(p_token, "%30d", p_interval)) {
ast_log(LOG_WARNING, "Parsing of Session-Expires failed\n");
return -1;
}
@@ -23957,7 +23957,7 @@ static struct sip_peer *build_peer(const char *name, struct ast_variable *v, str
} else if (realtime && !strcasecmp(v->name, "regseconds")) {
ast_get_time_t(v->value, &regseconds, 0, NULL);
} else if (realtime && !strcasecmp(v->name, "lastms")) {
- sscanf(v->value, "%d", &peer->lastms);
+ sscanf(v->value, "%30d", &peer->lastms);
} else if (realtime && !strcasecmp(v->name, "ipaddr") && !ast_strlen_zero(v->value) ) {
inet_aton(v->value, &(peer->addr.sin_addr));
} else if (realtime && !strcasecmp(v->name, "name"))
@@ -24160,22 +24160,22 @@ static struct sip_peer *build_peer(const char *name, struct ast_variable *v, str
} else if (!strcasecmp(v->name, "autoframing")) {
peer->autoframing = ast_true(v->value);
} else if (!strcasecmp(v->name, "rtptimeout")) {
- if ((sscanf(v->value, "%d", &peer->rtptimeout) != 1) || (peer->rtptimeout < 0)) {
+ if ((sscanf(v->value, "%30d", &peer->rtptimeout) != 1) || (peer->rtptimeout < 0)) {
ast_log(LOG_WARNING, "'%s' is not a valid RTP hold time at line %d. Using default.\n", v->value, v->lineno);
peer->rtptimeout = global_rtptimeout;
}
} else if (!strcasecmp(v->name, "rtpholdtimeout")) {
- if ((sscanf(v->value, "%d", &peer->rtpholdtimeout) != 1) || (peer->rtpholdtimeout < 0)) {
+ if ((sscanf(v->value, "%30d", &peer->rtpholdtimeout) != 1) || (peer->rtpholdtimeout < 0)) {
ast_log(LOG_WARNING, "'%s' is not a valid RTP hold time at line %d. Using default.\n", v->value, v->lineno);
peer->rtpholdtimeout = global_rtpholdtimeout;
}
} else if (!strcasecmp(v->name, "rtpkeepalive")) {
- if ((sscanf(v->value, "%d", &peer->rtpkeepalive) != 1) || (peer->rtpkeepalive < 0)) {
+ if ((sscanf(v->value, "%30d", &peer->rtpkeepalive) != 1) || (peer->rtpkeepalive < 0)) {
ast_log(LOG_WARNING, "'%s' is not a valid RTP keepalive time at line %d. Using default.\n", v->value, v->lineno);
peer->rtpkeepalive = global_rtpkeepalive;
}
} else if (!strcasecmp(v->name, "timert1")) {
- if ((sscanf(v->value, "%d", &peer->timer_t1) != 1) || (peer->timer_t1 < 0)) {
+ if ((sscanf(v->value, "%30d", &peer->timer_t1) != 1) || (peer->timer_t1 < 0)) {
ast_log(LOG_WARNING, "'%s' is not a valid T1 time at line %d. Using default.\n", v->value, v->lineno);
peer->timer_t1 = global_t1;
}
@@ -24185,7 +24185,7 @@ static struct sip_peer *build_peer(const char *name, struct ast_variable *v, str
peer->timer_b = peer->timer_t1 * 64;
}
} else if (!strcasecmp(v->name, "timerb")) {
- if ((sscanf(v->value, "%d", &peer->timer_b) != 1) || (peer->timer_b < 0)) {
+ if ((sscanf(v->value, "%30d", &peer->timer_b) != 1) || (peer->timer_b < 0)) {
ast_log(LOG_WARNING, "'%s' is not a valid Timer B time at line %d. Using default.\n", v->value, v->lineno);
peer->timer_b = global_timer_b;
}
@@ -24206,7 +24206,7 @@ static struct sip_peer *build_peer(const char *name, struct ast_variable *v, str
peer->maxms = 0;
} else if (!strcasecmp(v->value, "yes")) {
peer->maxms = default_qualify ? default_qualify : DEFAULT_MAXMS;
- } else if (sscanf(v->value, "%d", &peer->maxms) != 1) {
+ } else if (sscanf(v->value, "%30d", &peer->maxms) != 1) {
ast_log(LOG_WARNING, "Qualification of peer '%s' should be 'yes', 'no', or a number of milliseconds at line %d of sip.conf\n", peer->name, v->lineno);
peer->maxms = 0;
}
@@ -24220,7 +24220,7 @@ static struct sip_peer *build_peer(const char *name, struct ast_variable *v, str
}
} else if (!strcasecmp(v->name, "qualifyfreq")) {
int i;
- if (sscanf(v->value, "%d", &i) == 1)
+ if (sscanf(v->value, "%30d", &i) == 1)
peer->qualifyfreq = i * 1000;
else {
ast_log(LOG_WARNING, "Invalid qualifyfreq number '%s' at line %d of %s\n", v->value, v->lineno, config);
@@ -24239,12 +24239,12 @@ static struct sip_peer *build_peer(const char *name, struct ast_variable *v, str
peer->stimer.st_mode_oper = i;
}
} else if (!strcasecmp(v->name, "session-expires")) {
- if (sscanf(v->value, "%d", &peer->stimer.st_max_se) != 1) {
+ if (sscanf(v->value, "%30d", &peer->stimer.st_max_se) != 1) {
ast_log(LOG_WARNING, "Invalid session-expires '%s' at line %d of %s\n", v->value, v->lineno, config);
peer->stimer.st_max_se = global_max_se;
}
} else if (!strcasecmp(v->name, "session-minse")) {
- if (sscanf(v->value, "%d", &peer->stimer.st_min_se) != 1) {
+ if (sscanf(v->value, "%30d", &peer->stimer.st_min_se) != 1) {
ast_log(LOG_WARNING, "Invalid session-minse '%s' at line %d of %s\n", v->value, v->lineno, config);
peer->stimer.st_min_se = global_min_se;
}
@@ -24728,17 +24728,17 @@ static int reload_config(enum channelreloadreason reason)
} else if (!strcasecmp(v->name, "vmexten")) {
ast_copy_string(default_vmexten, v->value, sizeof(default_vmexten));
} else if (!strcasecmp(v->name, "rtptimeout")) {
- if ((sscanf(v->value, "%d", &global_rtptimeout) != 1) || (global_rtptimeout < 0)) {
+ if ((sscanf(v->value, "%30d", &global_rtptimeout) != 1) || (global_rtptimeout < 0)) {
ast_log(LOG_WARNING, "'%s' is not a valid RTP hold time at line %d. Using default.\n", v->value, v->lineno);
global_rtptimeout = 0;
}
} else if (!strcasecmp(v->name, "rtpholdtimeout")) {
- if ((sscanf(v->value, "%d", &global_rtpholdtimeout) != 1) || (global_rtpholdtimeout < 0)) {
+ if ((sscanf(v->value, "%30d", &global_rtpholdtimeout) != 1) || (global_rtpholdtimeout < 0)) {
ast_log(LOG_WARNING, "'%s' is not a valid RTP hold time at line %d. Using default.\n", v->value, v->lineno);
global_rtpholdtimeout = 0;
}
} else if (!strcasecmp(v->name, "rtpkeepalive")) {
- if ((sscanf(v->value, "%d", &global_rtpkeepalive) != 1) || (global_rtpkeepalive < 0)) {
+ if ((sscanf(v->value, "%30d", &global_rtpkeepalive) != 1) || (global_rtpkeepalive < 0)) {
ast_log(LOG_WARNING, "'%s' is not a valid RTP keepalive time at line %d. Using default.\n", v->value, v->lineno);
global_rtpkeepalive = DEFAULT_RTPKEEPALIVE;
}
@@ -24886,7 +24886,7 @@ static int reload_config(enum channelreloadreason reason)
if (!externip.sin_port)
externip.sin_port = bindaddr.sin_port;
} else if (!strcasecmp(v->name, "externrefresh")) {
- if (sscanf(v->value, "%d", &externrefresh) != 1) {
+ if (sscanf(v->value, "%30d", &externrefresh) != 1) {
ast_log(LOG_WARNING, "Invalid externrefresh value '%s', must be an integer >0 at line %d\n", v->value, v->lineno);
externrefresh = 10;
}
@@ -24950,28 +24950,28 @@ static int reload_config(enum channelreloadreason reason)
ast_log(LOG_WARNING, "Invalid cos_text value at line %d, refer to QoS documentation\n", v->lineno);
} else if (!strcasecmp(v->name, "bindport")) {
int i;
- if (sscanf(v->value, "%d", &i) == 1) {
+ if (sscanf(v->value, "%5d", &i) == 1) {
bindaddr.sin_port = htons(i);
} else {
ast_log(LOG_WARNING, "Invalid port number '%s' at line %d of %s\n", v->value, v->lineno, config);
}
} else if (!strcasecmp(v->name, "hash_user")) {
int i;
- if (sscanf(v->value, "%d", &i) == 1 && i > 2) {
+ if (sscanf(v->value, "%30d", &i) == 1 && i > 2) {
hash_user_size = i;
} else {
ast_log(LOG_WARNING, "Invalid hash_user size '%s' at line %d of %s -- should be much larger than 2\n", v->value, v->lineno, config);
}
} else if (!strcasecmp(v->name, "hash_peer")) {
int i;
- if (sscanf(v->value, "%d", &i) == 1 && i > 2) {
+ if (sscanf(v->value, "%30d", &i) == 1 && i > 2) {
hash_peer_size = i;
} else {
ast_log(LOG_WARNING, "Invalid hash_peer size '%s' at line %d of %s -- should be much larger than 2\n", v->value, v->lineno, config);
}
} else if (!strcasecmp(v->name, "hash_dialog")) {
int i;
- if (sscanf(v->value, "%d", &i) == 1 && i > 2) {
+ if (sscanf(v->value, "%30d", &i) == 1 && i > 2) {
hash_dialog_size = i;
} else {
ast_log(LOG_WARNING, "Invalid hash_dialog size '%s' at line %d of %s -- should be much larger than 2\n", v->value, v->lineno, config);
@@ -24981,13 +24981,13 @@ static int reload_config(enum channelreloadreason reason)
default_qualify = 0;
} else if (!strcasecmp(v->value, "yes")) {
default_qualify = DEFAULT_MAXMS;
- } else if (sscanf(v->value, "%d", &default_qualify) != 1) {
+ } else if (sscanf(v->value, "%30d", &default_qualify) != 1) {
ast_log(LOG_WARNING, "Qualification default should be 'yes', 'no', or a number of milliseconds at line %d of sip.conf\n", v->lineno);
default_qualify = 0;
}
} else if (!strcasecmp(v->name, "qualifyfreq")) {
int i;
- if (sscanf(v->value, "%d", &i) == 1)
+ if (sscanf(v->value, "%30d", &i) == 1)
global_qualifyfreq = i * 1000;
else {
ast_log(LOG_WARNING, "Invalid qualifyfreq number '%s' at line %d of %s\n", v->value, v->lineno, config);
@@ -25012,12 +25012,12 @@ static int reload_config(enum channelreloadreason reason)
global_st_mode = i;
}
} else if (!strcasecmp(v->name, "session-expires")) {
- if (sscanf(v->value, "%d", &global_max_se) != 1) {
+ if (sscanf(v->value, "%30d", &global_max_se) != 1) {
ast_log(LOG_WARNING, "Invalid session-expires '%s' at line %d of %s\n", v->value, v->lineno, config);
global_max_se = DEFAULT_MAX_SE;
}
} else if (!strcasecmp(v->name, "session-minse")) {
- if (sscanf(v->value, "%d", &global_min_se) != 1) {
+ if (sscanf(v->value, "%30d", &global_min_se) != 1) {
ast_log(LOG_WARNING, "Invalid session-minse '%s' at line %d of %s\n", v->value, v->lineno, config);
global_min_se = DEFAULT_MIN_SE;
}
@@ -25034,12 +25034,12 @@ static int reload_config(enum channelreloadreason reason)
global_st_refresher = i;
}
} else if (!strcasecmp(v->name, "qualifygap")) {
- if (sscanf(v->value, "%d", &global_qualify_gap) != 1) {
+ if (sscanf(v->value, "%30d", &global_qualify_gap) != 1) {
ast_log(LOG_WARNING, "Invalid qualifygap '%s' at line %d of %s\n", v->value, v->lineno, config);
global_qualify_gap = DEFAULT_QUALIFY_GAP;
}
} else if (!strcasecmp(v->name, "qualifypeers")) {
- if (sscanf(v->value, "%d", &global_qualify_peers) != 1) {
+ if (sscanf(v->value, "%30d", &global_qualify_peers) != 1) {
ast_log(LOG_WARNING, "Invalid pokepeers '%s' at line %d of %s\n", v->value, v->lineno, config);
global_qualify_peers = DEFAULT_QUALIFY_PEERS;
}
@@ -25663,7 +25663,7 @@ static int sip_sipredirect(struct sip_pvt *p, const char *dest)
memset(lport, 0, sizeof(lport));
localtmp++;
/* This is okey because lhost and lport are as big as tmp */
- sscanf(localtmp, "%[^<>:; ]:%[^<>:; ]", lhost, lport);
+ sscanf(localtmp, "%80[^<>:; ]:%80[^<>:; ]", lhost, lport);
if (ast_strlen_zero(lhost)) {
ast_log(LOG_ERROR, "Can't find the host address\n");
return 0;
diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c
index 86f3a7e3f..c289f3015 100644
--- a/channels/chan_skinny.c
+++ b/channels/chan_skinny.c
@@ -6689,7 +6689,7 @@ static struct ast_channel *skinny_request(const char *type, int format, const st
ast_log(LOG_WARNING, "Invalid cos_video value at line %d, refer to QoS documentation\n", v->lineno);
continue;
} else if (!strcasecmp(v->name, "bindport")) {
- if (sscanf(v->value, "%d", &ourport) == 1) {
+ if (sscanf(v->value, "%5d", &ourport) == 1) {
bindaddr.sin_port = htons(ourport);
} else {
ast_log(LOG_WARNING, "Invalid bindport '%s' at line %d of %s\n", v->value, v->lineno, config);
@@ -7166,7 +7166,7 @@ static struct ast_channel *skinny_request(const char *type, int format, const st
/* load the general section */
cat = ast_category_browse(cfg, "general");
config_parse_variables(TYPE_GENERAL, NULL, ast_variable_browse(cfg, "general"));
-
+
if (ntohl(bindaddr.sin_addr.s_addr)) {
__ourip = bindaddr.sin_addr;
} else {
diff --git a/channels/chan_usbradio.c b/channels/chan_usbradio.c
index dd1933483..088855702 100644
--- a/channels/chan_usbradio.c
+++ b/channels/chan_usbradio.c
@@ -351,8 +351,8 @@ END_CONFIG
#define DEV_DSP "/dev/dsp"
#endif
-static char *config = "usbradio.conf"; /* default config file */
-static char *config1 = "usbradio_tune_%s.conf"; /* tune config file */
+static const char *config = "usbradio.conf"; /* default config file */
+#define config1 "usbradio_tune_%s.conf" /* tune config file */
static FILE *frxcapraw = NULL, *frxcaptrace = NULL, *frxoutraw = NULL;
static FILE *ftxcapraw = NULL, *ftxcaptrace = NULL, *ftxoutraw = NULL;
@@ -1642,7 +1642,7 @@ static int usbradio_text(struct ast_channel *c, const char *text)
/* print received messages */
if(o->debuglevel)ast_verbose(" << Console Received usbradio text %s >> \n", text);
- cnt=sscanf(text,"%s %s %s %s %s %c",cmd,rxs,txs,rxpl,txpl,&pwr);
+ cnt = sscanf(text, "%300s %15s %15s %15s %15s %1c", cmd, rxs, txs, rxpl, txpl, &pwr);
if (strcmp(cmd,"SETCHAN")==0)
{
@@ -2812,7 +2812,7 @@ static void store_rxsdtype(struct chan_usbradio_pvt *o, char *s)
static void store_rxgain(struct chan_usbradio_pvt *o, char *s)
{
float f;
- sscanf(s,"%f",&f);
+ sscanf(s, "%30f", &f);
o->rxgain = f;
//ast_log(LOG_WARNING, "set rxgain = %f\n", f);
}
@@ -2821,7 +2821,7 @@ static void store_rxgain(struct chan_usbradio_pvt *o, char *s)
static void store_rxvoiceadj(struct chan_usbradio_pvt *o, char *s)
{
float f;
- sscanf(s,"%f",&f);
+ sscanf(s, "%30f", &f);
o->rxvoiceadj = f;
//ast_log(LOG_WARNING, "set rxvoiceadj = %f\n", f);
}
@@ -2830,7 +2830,7 @@ static void store_rxvoiceadj(struct chan_usbradio_pvt *o, char *s)
static void store_rxctcssadj(struct chan_usbradio_pvt *o, char *s)
{
float f;
- sscanf(s,"%f",&f);
+ sscanf(s, "%30f", &f);
o->rxctcssadj = f;
//ast_log(LOG_WARNING, "set rxctcssadj = %f\n", f);
}
@@ -3815,6 +3815,8 @@ static char *res2cli(int r)
static char *handle_console_key(struct ast_cli_entry *e,
int cmd, struct ast_cli_args *a)
{
+ char *argv[] = { "radio", "key", NULL };
+
switch (cmd) {
case CLI_INIT:
e->command = "radio key";
@@ -3823,12 +3825,13 @@ static char *handle_console_key(struct ast_cli_entry *e,
case CLI_GENERATE:
return NULL;
}
- return res2cli(console_key(a->fd,a->argc,a->argv));
+ return res2cli(console_key(a->fd, 2, argv));
}
static char *handle_console_unkey(struct ast_cli_entry *e,
int cmd, struct ast_cli_args *a)
{
+ char *argv[] = { "radio", "unkey", NULL };
switch (cmd) {
case CLI_INIT:
e->command = "radio unkey";
@@ -3837,12 +3840,13 @@ static char *handle_console_unkey(struct ast_cli_entry *e,
case CLI_GENERATE:
return NULL;
}
- return res2cli(console_unkey(a->fd,a->argc,a->argv));
+ return res2cli(console_unkey(a->fd, 2, argv));
}
static char *handle_radio_tune(struct ast_cli_entry *e,
int cmd, struct ast_cli_args *a)
{
+ char *argv[5] = { "radio", "tune", a->argc > 2 ? (char *) a->argv[2] : NULL, a->argc > 3 ? (char *) a->argv[3] : NULL };
switch (cmd) {
case CLI_INIT:
e->command = "radio tune";
@@ -3851,7 +3855,7 @@ static char *handle_radio_tune(struct ast_cli_entry *e,
case CLI_GENERATE:
return NULL;
}
- return res2cli(radio_tune(a->fd,a->argc,a->argv));
+ return res2cli(radio_tune(a->fd, a->argc, argv));
}
static char *handle_radio_debug(struct ast_cli_entry *e,
@@ -3865,7 +3869,7 @@ static char *handle_radio_debug(struct ast_cli_entry *e,
case CLI_GENERATE:
return NULL;
}
- return res2cli(radio_set_debug(a->fd,a->argc,a->argv));
+ return res2cli(radio_set_debug(a->fd, a->argc, NULL /* ignored */));
}
static char *handle_radio_debug_off(struct ast_cli_entry *e,
@@ -3879,12 +3883,13 @@ static char *handle_radio_debug_off(struct ast_cli_entry *e,
case CLI_GENERATE:
return NULL;
}
- return res2cli(radio_set_debug_off(a->fd,a->argc,a->argv));
+ return res2cli(radio_set_debug_off(a->fd, a->argc, NULL /* ignored */));
}
static char *handle_radio_active(struct ast_cli_entry *e,
int cmd, struct ast_cli_args *a)
{
+ char *argv[4] = { "radio", "active", a->argc > 2 ? (char *) a->argv[2] : NULL, };
switch (cmd) {
case CLI_INIT:
e->command = "radio active";
@@ -3893,12 +3898,13 @@ static char *handle_radio_active(struct ast_cli_entry *e,
case CLI_GENERATE:
return NULL;
}
- return res2cli(radio_active(a->fd,a->argc,a->argv));
+ return res2cli(radio_active(a->fd, a->argc, argv));
}
static char *handle_set_xdebug(struct ast_cli_entry *e,
int cmd, struct ast_cli_args *a)
{
+ char *argv[5] = { "radio", "set", "xdebug", a->argc == 4 ? (char *) a->argv[3] : NULL, };
switch (cmd) {
case CLI_INIT:
e->command = "radio set xdebug";
@@ -3907,7 +3913,7 @@ static char *handle_set_xdebug(struct ast_cli_entry *e,
case CLI_GENERATE:
return NULL;
}
- return res2cli(radio_set_xpmr_debug(a->fd,a->argc,a->argv));
+ return res2cli(radio_set_xpmr_debug(a->fd, a->argc, argv));
}
diff --git a/channels/iax2-provision.c b/channels/iax2-provision.c
index 4907f63b8..c7af9f324 100644
--- a/channels/iax2-provision.c
+++ b/channels/iax2-provision.c
@@ -261,7 +261,7 @@ int iax_provision_version(unsigned int *version, const char *template, int force
ast_mutex_lock(&provlock);
ast_db_get("iax/provisioning/cache", template, tmp, sizeof(tmp));
- if (sscanf(tmp, "v%x", version) != 1) {
+ if (sscanf(tmp, "v%30x", version) != 1) {
if (strcmp(tmp, "u")) {
ret = iax_provision_build(&ied, version, template, force);
if (ret)
@@ -319,7 +319,7 @@ static int iax_template_parse(struct iax_template *cur, struct ast_config *cfg,
v = ast_variable_browse(cfg, s);
while(v) {
if (!strcasecmp(v->name, "port") || !strcasecmp(v->name, "serverport")) {
- if ((sscanf(v->value, "%d", &x) == 1) && (x > 0) && (x < 65535)) {
+ if ((sscanf(v->value, "%5d", &x) == 1) && (x > 0) && (x < 65535)) {
if (!strcasecmp(v->name, "port")) {
cur->port = x;
foundportno = 1;
diff --git a/channels/misdn_config.c b/channels/misdn_config.c
index 70bc8a6c2..7318326f6 100644
--- a/channels/misdn_config.c
+++ b/channels/misdn_config.c
@@ -922,9 +922,9 @@ static int _parse (union misdn_cfg_pt *dest, const char *value, enum misdn_cfg_t
int res;
if (strchr(value,'x')) {
- res = sscanf(value, "%x", &tmp);
+ res = sscanf(value, "%30x", &tmp);
} else {
- res = sscanf(value, "%d", &tmp);
+ res = sscanf(value, "%30d", &tmp);
}
if (res) {
dest->num = ast_malloc(sizeof(int));
@@ -939,7 +939,7 @@ static int _parse (union misdn_cfg_pt *dest, const char *value, enum misdn_cfg_t
break;
case MISDN_CTYPE_BOOLINT:
dest->num = ast_malloc(sizeof(int));
- if (sscanf(value, "%d", &tmp)) {
+ if (sscanf(value, "%30d", &tmp)) {
memcpy(dest->num, &tmp, sizeof(int));
} else {
*(dest->num) = (ast_true(value) ? boolint_def : 0);
@@ -1008,7 +1008,7 @@ static void _build_port_config (struct ast_variable *v, char *cat)
for (token = strsep(&tmp, ","); token; token = strsep(&tmp, ","), *ptpbuf = 0) {
if (!*token)
continue;
- if (sscanf(token, "%d-%d%s", &start, &end, ptpbuf) >= 2) {
+ if (sscanf(token, "%30d-%30d%511s", &start, &end, ptpbuf) >= 2) {
for (; start <= end; start++) {
if (start <= max_ports && start > 0) {
cfg_for_ports[start] = 1;
@@ -1017,7 +1017,7 @@ static void _build_port_config (struct ast_variable *v, char *cat)
CLI_ERROR(v->name, v->value, cat);
}
} else {
- if (sscanf(token, "%d%s", &start, ptpbuf)) {
+ if (sscanf(token, "%30d%511s", &start, ptpbuf)) {
if (start <= max_ports && start > 0) {
cfg_for_ports[start] = 1;
ptp[start] = (strstr(ptpbuf, "ptp")) ? 1 : 0;
diff --git a/channels/sig_pri.c b/channels/sig_pri.c
index 307dabe4e..755eb9985 100644
--- a/channels/sig_pri.c
+++ b/channels/sig_pri.c
@@ -516,7 +516,7 @@ tryanotherpos:
/* if so, try next channel */
if (!ast_db_get(db_chan_name, SRVST_DBKEY, db_answer, sizeof(db_answer))) {
- sscanf(db_answer, "%c:%d", &state, &why);
+ sscanf(db_answer, "%1c:%30d", &state, &why);
if (why) {
ast_log(LOG_NOTICE, "span '%d' channel '%d' out-of-service (reason: %s), not sending RESTART\n", pri->span,
pri->pvts[pri->resetpos]->channel, (why & SRVST_FAREND) ? (why & SRVST_NEAREND) ? "both ends" : "far end" : "near end");
@@ -1014,7 +1014,7 @@ static void *pri_dchannel(void *vpri)
ast_mutex_unlock(&pri->pvts[chanpos]->service_lock);
if (!ast_db_get(db_chan_name, SRVST_DBKEY, db_answer, sizeof(db_answer))) {
- sscanf(db_answer, "%c:%d", &state, &why);
+ sscanf(db_answer, "%1c:%30d", &state, &why);
if (why) {
ast_log(LOG_NOTICE, "span '%d' channel '%d' out-of-service (reason: %s), ignoring RESTART\n", pri->span,
e->restart.channel, (why & SRVST_FAREND) ? (why & SRVST_NEAREND) ? "both ends" : "far end" : "near end");
@@ -1126,7 +1126,7 @@ static void *pri_dchannel(void *vpri)
snprintf(db_chan_name, sizeof(db_chan_name), "%s/%d:%d", dahdi_db, pri->pvts[chanpos]->pri->span, ch);
if (!ast_db_get(db_chan_name, SRVST_DBKEY, db_answer, sizeof(db_answer))) {
- sscanf(db_answer, "%c:%d", &state, &why);
+ sscanf(db_answer, "%1c:%30d", &state, &why);
ast_db_del(db_chan_name, SRVST_DBKEY);
}
switch (e->service.changestatus) {
@@ -2369,7 +2369,7 @@ int sig_pri_available(struct sig_pri_chan *p, int channelmatch, ast_group_t grou
snprintf(db_chan_name, sizeof(db_chan_name), "%s/%d:%d", dahdi_db, p->pri->span, p->channel);
if (!ast_db_get(db_chan_name, SRVST_DBKEY, db_answer, sizeof(db_answer))) {
- sscanf(db_answer, "%c:%d", &state, &why);
+ sscanf(db_answer, "%1c:%30d", &state, &why);
}
if ((p->resetting || p->call) || (why)) {
if (why) {
diff --git a/channels/xpmr/xpmr.c b/channels/xpmr/xpmr.c
index 7c87410b2..b94b0faf9 100755
--- a/channels/xpmr/xpmr.c
+++ b/channels/xpmr/xpmr.c
@@ -279,11 +279,11 @@ i16 code_string_parse(t_pmr_chan *pChan)
if(!xpmrx(pChan,XXO_LSDCODEPARSE_1))
#endif
{
- sscanf(p,"%f",&_f);
+ sscanf(p, "%30f", &_f);
ri=CtcssFreqIndex(_f);
if(ri>maxctcssindex)maxctcssindex=ri;
- sscanf(pChan->pTxCode[i],"%f",&_f);
+ sscanf(pChan->pTxCode[i], "%30f", &_f);
_ti=CtcssFreqIndex(_f);
if(_f>maxctcsstxfreq)maxctcsstxfreq=_f;
@@ -350,7 +350,7 @@ i16 code_string_parse(t_pmr_chan *pChan)
if(!lsd_code_parse(pChan,3))
#endif
{
- sscanf(p,"%f",&f);
+ sscanf(p, "%30f", &f);
ti=CtcssFreqIndex(f);
if(f>maxctcsstxfreq)maxctcsstxfreq=f;
diff --git a/codecs/codec_speex.c b/codecs/codec_speex.c
index 844feed2c..2966a7a0c 100644
--- a/codecs/codec_speex.c
+++ b/codecs/codec_speex.c
@@ -364,7 +364,7 @@ static int parse_config(int reload)
} else
ast_log(LOG_ERROR,"Error! Complexity must be 0-10\n");
} else if (!strcasecmp(var->name, "vbr_quality")) {
- if (sscanf(var->value, "%f", &res_f) == 1 && res_f >= 0 && res_f <= 10) {
+ if (sscanf(var->value, "%30f", &res_f) == 1 && res_f >= 0 && res_f <= 10) {
ast_verb(3, "CODEC SPEEX: Setting VBR Quality to %f\n",res_f);
vbr_quality = res_f;
} else
@@ -403,7 +403,7 @@ static int parse_config(int reload)
pp_agc = ast_true(var->value) ? 1 : 0;
ast_verb(3, "CODEC SPEEX: Preprocessor AGC. [%s]\n",pp_agc ? "on" : "off");
} else if (!strcasecmp(var->name, "pp_agc_level")) {
- if (sscanf(var->value, "%f", &res_f) == 1 && res_f >= 0) {
+ if (sscanf(var->value, "%30f", &res_f) == 1 && res_f >= 0) {
ast_verb(3, "CODEC SPEEX: Setting preprocessor AGC Level to %f\n",res_f);
pp_agc_level = res_f;
} else
@@ -415,13 +415,13 @@ static int parse_config(int reload)
pp_dereverb = ast_true(var->value) ? 1 : 0;
ast_verb(3, "CODEC SPEEX: Preprocessor Dereverb. [%s]\n",pp_dereverb ? "on" : "off");
} else if (!strcasecmp(var->name, "pp_dereverb_decay")) {
- if (sscanf(var->value, "%f", &res_f) == 1 && res_f >= 0) {
+ if (sscanf(var->value, "%30f", &res_f) == 1 && res_f >= 0) {
ast_verb(3, "CODEC SPEEX: Setting preprocessor Dereverb Decay to %f\n",res_f);
pp_dereverb_decay = res_f;
} else
ast_log(LOG_ERROR,"Error! Preprocessor Dereverb Decay must be >= 0\n");
} else if (!strcasecmp(var->name, "pp_dereverb_level")) {
- if (sscanf(var->value, "%f", &res_f) == 1 && res_f >= 0) {
+ if (sscanf(var->value, "%30f", &res_f) == 1 && res_f >= 0) {
ast_verb(3, "CODEC SPEEX: Setting preprocessor Dereverb Level to %f\n",res_f);
pp_dereverb_level = res_f;
} else
diff --git a/doc/CODING-GUIDELINES b/doc/CODING-GUIDELINES
index c81ca5c6b..8fb213e13 100644
--- a/doc/CODING-GUIDELINES
+++ b/doc/CODING-GUIDELINES
@@ -412,6 +412,17 @@ you wish to put into it (even if you did not allocate the buffer yourself),
use a direct strcpy(), as it can be inlined and optimized to simple
processor operations, unlike ast_copy_string().
+* String conversions
+--------------------
+
+When converting from strings to integers or floats, use the sscanf function
+in preference to the atoi and atof family of functions, as sscanf detects
+errors. Always check the return value of sscanf to verify that your numeric
+variables successfully scanned before using them. Also, to avoid a potential
+libc bug, always specify a maximum width for each format specifier, including
+integers and floats. A good length for both integers and floats is 30, as
+this is more than generous, even if you're using doubles or long integers.
+
* Use of functions
------------------
diff --git a/funcs/func_channel.c b/funcs/func_channel.c
index b151c19d1..9cc4001b6 100644
--- a/funcs/func_channel.c
+++ b/funcs/func_channel.c
@@ -364,7 +364,7 @@ static int func_channel_write(struct ast_channel *chan, const char *function,
else if (!strcasecmp(data, "amaflags")) {
ast_channel_lock(chan);
if(isdigit(*value)) {
- sscanf(value, "%d", &chan->amaflags);
+ sscanf(value, "%30d", &chan->amaflags);
} else if (!strcasecmp(value,"OMIT")){
chan->amaflags = 1;
} else if (!strcasecmp(value,"BILLING")){
@@ -409,10 +409,10 @@ static int func_channel_write(struct ast_channel *chan, const char *function,
} else if (!strcasecmp(data, "callgroup"))
chan->callgroup = ast_get_group(value);
else if (!strcasecmp(data, "txgain")) {
- sscanf(value, "%hhd", &gainset);
+ sscanf(value, "%4hhd", &gainset);
ast_channel_setoption(chan, AST_OPTION_TXGAIN, &gainset, sizeof(gainset), 0);
} else if (!strcasecmp(data, "rxgain")) {
- sscanf(value, "%hhd", &gainset);
+ sscanf(value, "%4hhd", &gainset);
ast_channel_setoption(chan, AST_OPTION_RXGAIN, &gainset, sizeof(gainset), 0);
} else if (!strcasecmp(data, "transfercapability")) {
unsigned short i;
diff --git a/funcs/func_cut.c b/funcs/func_cut.c
index c7eb6e5b9..10bca0a9f 100644
--- a/funcs/func_cut.c
+++ b/funcs/func_cut.c
@@ -129,7 +129,7 @@ static int sort_internal(struct ast_channel *chan, char *data, char *buffer, siz
}
*ptrvalue++ = '\0';
sortable_keys[count2].key = ptrkey;
- sscanf(ptrvalue, "%f", &sortable_keys[count2].value);
+ sscanf(ptrvalue, "%30f", &sortable_keys[count2].value);
count2++;
}
@@ -191,15 +191,15 @@ static int cut_internal(struct ast_channel *chan, char *data, struct ast_str **b
int start_field, stop_field;
char trashchar;
- if (sscanf(next_range, "%d-%d", &start_field, &stop_field) == 2) {
+ if (sscanf(next_range, "%30d-%30d", &start_field, &stop_field) == 2) {
/* range with both start and end */
- } else if (sscanf(next_range, "-%d", &stop_field) == 1) {
+ } else if (sscanf(next_range, "-%30d", &stop_field) == 1) {
/* range with end only */
start_field = 1;
- } else if ((sscanf(next_range, "%d%c", &start_field, &trashchar) == 2) && (trashchar == '-')) {
+ } else if ((sscanf(next_range, "%30d%1c", &start_field, &trashchar) == 2) && (trashchar == '-')) {
/* range with start only */
stop_field = INT_MAX;
- } else if (sscanf(next_range, "%d", &start_field) == 1) {
+ } else if (sscanf(next_range, "%30d", &start_field) == 1) {
/* single number */
stop_field = start_field;
} else {
diff --git a/funcs/func_dialplan.c b/funcs/func_dialplan.c
index 1968a8b66..6ad9c1c9b 100644
--- a/funcs/func_dialplan.c
+++ b/funcs/func_dialplan.c
@@ -72,7 +72,7 @@ static int isexten_function_read(struct ast_channel *chan, const char *cmd, char
if (!ast_strlen_zero(args.priority)) {
int priority_num;
- if (sscanf(args.priority, "%d", &priority_num) == 1 && priority_num > 0) {
+ if (sscanf(args.priority, "%30d", &priority_num) == 1 && priority_num > 0) {
int res;
res = ast_exists_extension(chan, args.context, args.exten, priority_num,
chan->cid.cid_num);
diff --git a/funcs/func_enum.c b/funcs/func_enum.c
index 698962135..bdda66d2f 100644
--- a/funcs/func_enum.c
+++ b/funcs/func_enum.c
@@ -365,7 +365,7 @@ static int enum_result_read(struct ast_channel *chan, const char *cmd, char *dat
goto finish;
}
- if (sscanf(args.resultnum, "%u", &num) != 1) {
+ if (sscanf(args.resultnum, "%30u", &num) != 1) {
ast_log(LOG_ERROR, "Invalid value '%s' for resultnum to ENUMRESULT!\n", args.resultnum);
goto finish;
}
diff --git a/funcs/func_math.c b/funcs/func_math.c
index cac3512ab..ab174d944 100644
--- a/funcs/func_math.c
+++ b/funcs/func_math.c
@@ -255,12 +255,12 @@ static int math(struct ast_channel *chan, const char *cmd, char *parse,
return -1;
}
- if (sscanf(mvalue1, "%lf", &fnum1) != 1) {
+ if (sscanf(mvalue1, "%30lf", &fnum1) != 1) {
ast_log(LOG_WARNING, "'%s' is not a valid number\n", mvalue1);
return -1;
}
- if (sscanf(mvalue2, "%lf", &fnum2) != 1) {
+ if (sscanf(mvalue2, "%30lf", &fnum2) != 1) {
ast_log(LOG_WARNING, "'%s' is not a valid number\n", mvalue2);
return -1;
}
@@ -397,7 +397,7 @@ static int crement_function_read(struct ast_channel *chan, const char *cmd,
return -1;
}
- if (sscanf(var, "%d%c", &int_value, &endchar) == 0 || endchar != 0) {
+ if (sscanf(var, "%30d%1c", &int_value, &endchar) == 0 || endchar != 0) {
ast_log(LOG_NOTICE, "The content of ${%s} is not a numeric value - bailing out!\n", data);
ast_channel_unlock(chan);
return -1;
diff --git a/funcs/func_odbc.c b/funcs/func_odbc.c
index 0205f1872..c43417e1c 100644
--- a/funcs/func_odbc.c
+++ b/funcs/func_odbc.c
@@ -836,7 +836,7 @@ static int init_acf_query(struct ast_config *cfg, char *catg, struct acf_odbc_qu
if (strcasecmp(tmp, "multirow") == 0)
ast_set_flag((*query), OPT_MULTIROW);
if ((tmp = ast_variable_retrieve(cfg, catg, "rowlimit")))
- sscanf(tmp, "%d", &((*query)->rowlimit));
+ sscanf(tmp, "%30d", &((*query)->rowlimit));
}
(*query)->acf = ast_calloc(1, sizeof(struct ast_custom_function));
diff --git a/funcs/func_rand.c b/funcs/func_rand.c
index c49e63a44..2d4e02fcf 100644
--- a/funcs/func_rand.c
+++ b/funcs/func_rand.c
@@ -63,10 +63,10 @@ static int acf_rand_exec(struct ast_channel *chan, const char *cmd,
AST_STANDARD_APP_ARGS(args, parse);
- if (ast_strlen_zero(args.min) || sscanf(args.min, "%d", &min_int) != 1)
+ if (ast_strlen_zero(args.min) || sscanf(args.min, "%30d", &min_int) != 1)
min_int = 0;
- if (ast_strlen_zero(args.max) || sscanf(args.max, "%d", &max_int) != 1)
+ if (ast_strlen_zero(args.max) || sscanf(args.max, "%30d", &max_int) != 1)
max_int = RAND_MAX;
if (max_int < min_int) {
diff --git a/funcs/func_speex.c b/funcs/func_speex.c
index edfa3579b..d5246b0bd 100644
--- a/funcs/func_speex.c
+++ b/funcs/func_speex.c
@@ -239,7 +239,7 @@ static int speex_write(struct ast_channel *chan, const char *cmd, char *data, co
}
if (!strcasecmp(cmd, "agc")) {
- if (!sscanf(value, "%f", &(*sdi)->agclevel))
+ if (!sscanf(value, "%30f", &(*sdi)->agclevel))
(*sdi)->agclevel = ast_true(value) ? DEFAULT_AGC_LEVEL : 0.0;
if ((*sdi)->agclevel > 32768.0) {
diff --git a/funcs/func_sprintf.c b/funcs/func_sprintf.c
index af292df1d..4e3fbb99c 100644
--- a/funcs/func_sprintf.c
+++ b/funcs/func_sprintf.c
@@ -123,7 +123,7 @@ static int acf_sprintf(struct ast_channel *chan, const char *cmd, char *data, ch
/* Convert the argument into the required type */
if (arg.var[argcount]) {
- if (sscanf(arg.var[argcount++], "%d", &tmpi) != 1) {
+ if (sscanf(arg.var[argcount++], "%30d", &tmpi) != 1) {
ast_log(LOG_ERROR, "Argument '%s' is not an integer number for format '%s'\n", arg.var[argcount - 1], formatbuf);
goto sprintf_fail;
}
@@ -146,7 +146,7 @@ static int acf_sprintf(struct ast_channel *chan, const char *cmd, char *data, ch
/* Convert the argument into the required type */
if (arg.var[argcount]) {
- if (sscanf(arg.var[argcount++], "%lf", &tmpd) != 1) {
+ if (sscanf(arg.var[argcount++], "%30lf", &tmpd) != 1) {
ast_log(LOG_ERROR, "Argument '%s' is not a floating point number for format '%s'\n", arg.var[argcount - 1], formatbuf);
goto sprintf_fail;
}
diff --git a/funcs/func_timeout.c b/funcs/func_timeout.c
index f2623b485..79d908d18 100644
--- a/funcs/func_timeout.c
+++ b/funcs/func_timeout.c
@@ -137,7 +137,7 @@ static int timeout_write(struct ast_channel *chan, const char *cmd, char *data,
if (!value)
return -1;
- res = sscanf(value, "%ld%lf", &sec, &x);
+ res = sscanf(value, "%30ld%30lf", &sec, &x);
if (res == 0 || sec < 0) {
when.tv_sec = 0;
when.tv_usec = 0;
diff --git a/main/acl.c b/main/acl.c
index 3484c71db..fea76a62b 100644
--- a/main/acl.c
+++ b/main/acl.c
@@ -297,7 +297,7 @@ struct ast_ha *ast_append_ha(const char *sense, const char *stuff, struct ast_ha
nm++;
if (!strchr(nm, '.')) {
- if ((sscanf(nm, "%d", &x) == 1) && (x >= 0) && (x <= 32)) {
+ if ((sscanf(nm, "%30d", &x) == 1) && (x >= 0) && (x <= 32)) {
ha->netmask.s_addr = htonl(0xFFFFFFFF << (32 - x));
} else {
ast_log(LOG_WARNING, "Invalid CIDR in %s\n", stuff);
@@ -423,7 +423,7 @@ int ast_str2cos(const char *value, unsigned int *cos)
{
int fval;
- if (sscanf(value, "%d", &fval) == 1) {
+ if (sscanf(value, "%30d", &fval) == 1) {
if (fval < 8) {
*cos = fval;
return 0;
@@ -438,7 +438,7 @@ int ast_str2tos(const char *value, unsigned int *tos)
int fval;
unsigned int x;
- if (sscanf(value, "%i", &fval) == 1) {
+ if (sscanf(value, "%30i", &fval) == 1) {
*tos = fval & 0xFF;
return 0;
}
diff --git a/main/asterisk.c b/main/asterisk.c
index 3e9837641..dbf479314 100644
--- a/main/asterisk.c
+++ b/main/asterisk.c
@@ -1389,7 +1389,7 @@ static int ast_makesocket(void)
if (!ast_strlen_zero(ast_config_AST_CTL_PERMISSIONS)) {
int p1;
mode_t p;
- sscanf(ast_config_AST_CTL_PERMISSIONS, "%o", &p1);
+ sscanf(ast_config_AST_CTL_PERMISSIONS, "%30o", &p1);
p = p1;
if ((chmod(ast_config_AST_SOCKET, p)) < 0)
ast_log(LOG_WARNING, "Unable to change file permissions of %s: %s\n", ast_config_AST_SOCKET, strerror(errno));
@@ -2192,10 +2192,10 @@ static char *cli_prompt(EditLine *editline)
switch (*t) {
case 'C': /* color */
t++;
- if (sscanf(t, "%d;%d%n", &fgcolor, &bgcolor, &i) == 2) {
+ if (sscanf(t, "%30d;%30d%n", &fgcolor, &bgcolor, &i) == 2) {
ast_str_append(&prompt, 0, "%s", term_color_code(term_code, fgcolor, bgcolor, sizeof(term_code)));
t += i - 1;
- } else if (sscanf(t, "%d%n", &fgcolor, &i) == 1) {
+ } else if (sscanf(t, "%30d%n", &fgcolor, &i) == 1) {
ast_str_append(&prompt, 0, "%s", term_color_code(term_code, fgcolor, 0, sizeof(term_code)));
t += i - 1;
}
@@ -2236,7 +2236,7 @@ static char *cli_prompt(EditLine *editline)
#ifdef HAVE_GETLOADAVG
case 'l': /* load avg */
t++;
- if (sscanf(t, "%d", &which) == 1 && which > 0 && which <= 3) {
+ if (sscanf(t, "%30d", &which) == 1 && which > 0 && which <= 3) {
double list[3];
getloadavg(list, 3);
ast_str_append(&prompt, 0, "%.2f", list[which - 1]);
@@ -2878,7 +2878,7 @@ static void ast_readconfig(void)
/* debug level (-d at startup) */
} else if (!strcasecmp(v->name, "debug")) {
option_debug = 0;
- if (sscanf(v->value, "%d", &option_debug) != 1) {
+ if (sscanf(v->value, "%30d", &option_debug) != 1) {
option_debug = ast_true(v->value);
}
#if HAVE_WORKING_FORK
@@ -2926,7 +2926,7 @@ static void ast_readconfig(void)
} else if (!strcasecmp(v->name, "internal_timing")) {
ast_set2_flag(&ast_options, ast_true(v->value), AST_OPT_FLAG_INTERNAL_TIMING);
} else if (!strcasecmp(v->name, "maxcalls")) {
- if ((sscanf(v->value, "%d", &option_maxcalls) != 1) || (option_maxcalls < 0)) {
+ if ((sscanf(v->value, "%30d", &option_maxcalls) != 1) || (option_maxcalls < 0)) {
option_maxcalls = 0;
}
} else if (!strcasecmp(v->name, "maxload")) {
@@ -2935,7 +2935,7 @@ static void ast_readconfig(void)
if (getloadavg(test, 1) == -1) {
ast_log(LOG_ERROR, "Cannot obtain load average on this system. 'maxload' option disabled.\n");
option_maxload = 0.0;
- } else if ((sscanf(v->value, "%lf", &option_maxload) != 1) || (option_maxload < 0.0)) {
+ } else if ((sscanf(v->value, "%30lf", &option_maxload) != 1) || (option_maxload < 0.0)) {
option_maxload = 0.0;
}
/* Set the maximum amount of open files */
@@ -2977,7 +2977,7 @@ static void ast_readconfig(void)
} else if (!strcasecmp(v->name, "minmemfree")) {
/* specify the minimum amount of free memory to retain. Asterisk should stop accepting new calls
* if the amount of free memory falls below this watermark */
- if ((sscanf(v->value, "%ld", &option_minmemfree) != 1) || (option_minmemfree < 0)) {
+ if ((sscanf(v->value, "%30ld", &option_minmemfree) != 1) || (option_minmemfree < 0)) {
option_minmemfree = 0;
}
#endif
@@ -2998,7 +2998,7 @@ static void ast_readconfig(void)
}
for (v = ast_variable_browse(cfg, "compat"); v; v = v->next) {
float version;
- if (sscanf(v->value, "%f", &version) != 1) {
+ if (sscanf(v->value, "%30f", &version) != 1) {
ast_log(LOG_WARNING, "Compatibility version for option '%s' is not a number: '%s'\n", v->name, v->value);
continue;
}
@@ -3142,7 +3142,7 @@ int main(int argc, char *argv[])
switch (c) {
#if defined(HAVE_SYSINFO)
case 'e':
- if ((sscanf(&optarg[1], "%ld", &option_minmemfree) != 1) || (option_minmemfree < 0)) {
+ if ((sscanf(&optarg[1], "%30ld", &option_minmemfree) != 1) || (option_minmemfree < 0)) {
option_minmemfree = 0;
}
break;
@@ -3182,11 +3182,11 @@ int main(int argc, char *argv[])
ast_set_flag(&ast_options, AST_OPT_FLAG_MUTE);
break;
case 'M':
- if ((sscanf(optarg, "%d", &option_maxcalls) != 1) || (option_maxcalls < 0))
+ if ((sscanf(optarg, "%30d", &option_maxcalls) != 1) || (option_maxcalls < 0))
option_maxcalls = 0;
break;
case 'L':
- if ((sscanf(optarg, "%lf", &option_maxload) != 1) || (option_maxload < 0.0))
+ if ((sscanf(optarg, "%30lf", &option_maxload) != 1) || (option_maxload < 0.0))
option_maxload = 0.0;
break;
case 'q':
diff --git a/main/cdr.c b/main/cdr.c
index 0658ead75..69d4a8fe1 100644
--- a/main/cdr.c
+++ b/main/cdr.c
@@ -1493,7 +1493,7 @@ static int do_reload(int reload)
batchsafeshutdown = ast_true(batchsafeshutdown_value);
}
if ((size_value = ast_variable_retrieve(config, "general", "size"))) {
- if (sscanf(size_value, "%d", &cfg_size) < 1)
+ if (sscanf(size_value, "%30d", &cfg_size) < 1)
ast_log(LOG_WARNING, "Unable to convert '%s' to a numeric value.\n", size_value);
else if (cfg_size < 0)
ast_log(LOG_WARNING, "Invalid maximum batch size '%d' specified, using default\n", cfg_size);
@@ -1501,7 +1501,7 @@ static int do_reload(int reload)
batchsize = cfg_size;
}
if ((time_value = ast_variable_retrieve(config, "general", "time"))) {
- if (sscanf(time_value, "%d", &cfg_time) < 1)
+ if (sscanf(time_value, "%30d", &cfg_time) < 1)
ast_log(LOG_WARNING, "Unable to convert '%s' to a numeric value.\n", time_value);
else if (cfg_time < 0)
ast_log(LOG_WARNING, "Invalid maximum batch time '%d' specified, using default\n", cfg_time);
diff --git a/main/channel.c b/main/channel.c
index f4f5d9013..65cc5b354 100644
--- a/main/channel.c
+++ b/main/channel.c
@@ -6144,9 +6144,9 @@ ast_group_t ast_get_group(const char *s)
c = ast_strdupa(s);
while ((piece = strsep(&c, ","))) {
- if (sscanf(piece, "%d-%d", &start, &finish) == 2) {
+ if (sscanf(piece, "%30d-%30d", &start, &finish) == 2) {
/* Range */
- } else if (sscanf(piece, "%d", &start)) {
+ } else if (sscanf(piece, "%30d", &start)) {
/* Just one */
finish = start;
} else {
diff --git a/main/cli.c b/main/cli.c
index f3e3e6e22..5b31bba2b 100644
--- a/main/cli.c
+++ b/main/cli.c
@@ -444,7 +444,7 @@ static char *handle_verbose(struct ast_cli_entry *e, int cmd, struct ast_cli_arg
atleast = 1;
if (argc != e->args + atleast + 1 && argc != e->args + atleast + 2)
return CLI_SHOWUSAGE;
- if (sscanf(argv[e->args + atleast], "%d", &newlevel) != 1)
+ if (sscanf(argv[e->args + atleast], "%30d", &newlevel) != 1)
return CLI_SHOWUSAGE;
if (argc == e->args + atleast + 2) {
unsigned int debug = (*what == 'C');
diff --git a/main/config.c b/main/config.c
index c1805956e..f72654834 100644
--- a/main/config.c
+++ b/main/config.c
@@ -364,7 +364,7 @@ void ast_variable_insert(struct ast_category *category, struct ast_variable *var
int lineno;
int insertline;
- if (!variable || sscanf(line, "%d", &insertline) != 1) {
+ if (!variable || sscanf(line, "%30d", &insertline) != 1) {
return;
}
if (!insertline) {
diff --git a/main/dnsmgr.c b/main/dnsmgr.c
index 54d9467ee..a7bc9f58a 100644
--- a/main/dnsmgr.c
+++ b/main/dnsmgr.c
@@ -394,7 +394,7 @@ static int do_reload(int loading)
enabled = ast_true(enabled_value);
}
if ((interval_value = ast_variable_retrieve(config, "general", "refreshinterval"))) {
- if (sscanf(interval_value, "%d", &interval) < 1)
+ if (sscanf(interval_value, "%30d", &interval) < 1)
ast_log(LOG_WARNING, "Unable to convert '%s' to a numeric value.\n", interval_value);
else if (interval < 0)
ast_log(LOG_WARNING, "Invalid refresh interval '%d' specified, using default\n", interval);
diff --git a/main/dsp.c b/main/dsp.c
index ab7cacf1a..83a6dd79b 100644
--- a/main/dsp.c
+++ b/main/dsp.c
@@ -1670,7 +1670,7 @@ static int _dsp_init(int reload)
const char *value;
value = ast_variable_retrieve(cfg, "default", "silencethreshold");
- if (value && sscanf(value, "%d", &thresholds[THRESHOLD_SILENCE]) != 1) {
+ if (value && sscanf(value, "%30d", &thresholds[THRESHOLD_SILENCE]) != 1) {
ast_log(LOG_WARNING, "%s: '%s' is not a valid silencethreshold value\n", CONFIG_FILE_NAME, value);
thresholds[THRESHOLD_SILENCE] = 256;
} else if (!value) {
diff --git a/main/enum.c b/main/enum.c
index c8ff67e2b..416bb9072 100644
--- a/main/enum.c
+++ b/main/enum.c
@@ -114,7 +114,7 @@ static int cclen(const char *number)
strncpy(digits, number, 2);
- if (!sscanf(digits, "%d", &cc)) {
+ if (!sscanf(digits, "%30d", &cc)) {
return 0;
}
diff --git a/main/features.c b/main/features.c
index b0774c2b7..becb6eae7 100644
--- a/main/features.c
+++ b/main/features.c
@@ -657,7 +657,7 @@ static struct parkeduser *park_space_reserve(struct ast_channel *chan,
* limitation here. If extout was not numeric, we could permit
* arbitrary non-numeric extensions.
*/
- if (sscanf(parkingexten, "%d", &parking_space) != 1 || parking_space < 0) {
+ if (sscanf(parkingexten, "%30d", &parking_space) != 1 || parking_space < 0) {
AST_LIST_UNLOCK(&parkinglot->parkings);
parkinglot_unref(parkinglot);
free(pu);
@@ -3484,7 +3484,7 @@ static int park_call_exec(struct ast_channel *chan, const char *data)
if (parse) {
if (!ast_strlen_zero(app_args.timeout)) {
- if (sscanf(app_args.timeout, "%d", &args.timeout) != 1) {
+ if (sscanf(app_args.timeout, "%30d", &args.timeout) != 1) {
ast_log(LOG_WARNING, "Invalid timeout '%s' provided\n", app_args.timeout);
args.timeout = 0;
}
@@ -3496,7 +3496,7 @@ static int park_call_exec(struct ast_channel *chan, const char *data)
args.return_ext = app_args.return_ext;
}
if (!ast_strlen_zero(app_args.return_pri)) {
- if (sscanf(app_args.return_pri, "%d", &args.return_pri) != 1) {
+ if (sscanf(app_args.return_pri, "%30d", &args.return_pri) != 1) {
ast_log(LOG_WARNING, "Invalid priority '%s' specified\n", app_args.return_pri);
args.return_pri = 0;
}
@@ -3765,13 +3765,13 @@ static struct ast_parkinglot *build_parkinglot(char *name, struct ast_variable *
if (!strcasecmp(confvar->name, "context")) {
ast_copy_string(parkinglot->parking_con, confvar->value, sizeof(parkinglot->parking_con));
} else if (!strcasecmp(confvar->name, "parkingtime")) {
- if ((sscanf(confvar->value, "%d", &parkinglot->parkingtime) != 1) || (parkinglot->parkingtime < 1)) {
+ if ((sscanf(confvar->value, "%30d", &parkinglot->parkingtime) != 1) || (parkinglot->parkingtime < 1)) {
ast_log(LOG_WARNING, "%s is not a valid parkingtime\n", confvar->value);
parkinglot->parkingtime = DEFAULT_PARK_TIME;
} else
parkinglot->parkingtime = parkinglot->parkingtime * 1000;
} else if (!strcasecmp(confvar->name, "parkpos")) {
- if (sscanf(confvar->value, "%d-%d", &start, &end) != 2) {
+ if (sscanf(confvar->value, "%30d-%30d", &start, &end) != 2) {
ast_log(LOG_WARNING, "Format for parking positions is a-b, where a and b are numbers at line %d of parking.conf\n", confvar->lineno);
error = 1;
} else {
@@ -3935,13 +3935,13 @@ static int load_config(void)
} else if (!strcasecmp(var->name, "context")) {
ast_copy_string(default_parkinglot->parking_con, var->value, sizeof(default_parkinglot->parking_con));
} else if (!strcasecmp(var->name, "parkingtime")) {
- if ((sscanf(var->value, "%d", &default_parkinglot->parkingtime) != 1) || (default_parkinglot->parkingtime < 1)) {
+ if ((sscanf(var->value, "%30d", &default_parkinglot->parkingtime) != 1) || (default_parkinglot->parkingtime < 1)) {
ast_log(LOG_WARNING, "%s is not a valid parkingtime\n", var->value);
default_parkinglot->parkingtime = DEFAULT_PARK_TIME;
} else
default_parkinglot->parkingtime = default_parkinglot->parkingtime * 1000;
} else if (!strcasecmp(var->name, "parkpos")) {
- if (sscanf(var->value, "%d-%d", &start, &end) != 2) {
+ if (sscanf(var->value, "%30d-%30d", &start, &end) != 2) {
ast_log(LOG_WARNING, "Format for parking positions is a-b, where a and b are numbers at line %d of features.conf\n", var->lineno);
} else if (default_parkinglot) {
default_parkinglot->parking_start = start;
@@ -3984,24 +3984,24 @@ static int load_config(void)
} else if (!strcasecmp(var->name, "adsipark")) {
adsipark = ast_true(var->value);
} else if (!strcasecmp(var->name, "transferdigittimeout")) {
- if ((sscanf(var->value, "%d", &transferdigittimeout) != 1) || (transferdigittimeout < 1)) {
+ if ((sscanf(var->value, "%30d", &transferdigittimeout) != 1) || (transferdigittimeout < 1)) {
ast_log(LOG_WARNING, "%s is not a valid transferdigittimeout\n", var->value);
transferdigittimeout = DEFAULT_TRANSFER_DIGIT_TIMEOUT;
} else
transferdigittimeout = transferdigittimeout * 1000;
} else if (!strcasecmp(var->name, "featuredigittimeout")) {
- if ((sscanf(var->value, "%d", &featuredigittimeout) != 1) || (featuredigittimeout < 1)) {
+ if ((sscanf(var->value, "%30d", &featuredigittimeout) != 1) || (featuredigittimeout < 1)) {
ast_log(LOG_WARNING, "%s is not a valid featuredigittimeout\n", var->value);
featuredigittimeout = DEFAULT_FEATURE_DIGIT_TIMEOUT;
}
} else if (!strcasecmp(var->name, "atxfernoanswertimeout")) {
- if ((sscanf(var->value, "%d", &atxfernoanswertimeout) != 1) || (atxfernoanswertimeout < 1)) {
+ if ((sscanf(var->value, "%30d", &atxfernoanswertimeout) != 1) || (atxfernoanswertimeout < 1)) {
ast_log(LOG_WARNING, "%s is not a valid atxfernoanswertimeout\n", var->value);
atxfernoanswertimeout = DEFAULT_NOANSWER_TIMEOUT_ATTENDED_TRANSFER;
} else
atxfernoanswertimeout = atxfernoanswertimeout * 1000;
} else if (!strcasecmp(var->name, "atxferloopdelay")) {
- if ((sscanf(var->value, "%u", &atxferloopdelay) != 1)) {
+ if ((sscanf(var->value, "%30u", &atxferloopdelay) != 1)) {
ast_log(LOG_WARNING, "%s is not a valid atxferloopdelay\n", var->value);
atxferloopdelay = DEFAULT_ATXFER_LOOP_DELAY;
} else
@@ -4009,7 +4009,7 @@ static int load_config(void)
} else if (!strcasecmp(var->name, "atxferdropcall")) {
atxferdropcall = ast_true(var->value);
} else if (!strcasecmp(var->name, "atxfercallbackretries")) {
- if ((sscanf(var->value, "%u", &atxferloopdelay) != 1)) {
+ if ((sscanf(var->value, "%30u", &atxferloopdelay) != 1)) {
ast_log(LOG_WARNING, "%s is not a valid atxfercallbackretries\n", var->value);
atxfercallbackretries = DEFAULT_ATXFER_CALLBACK_RETRIES;
}
@@ -4605,7 +4605,7 @@ static int manager_park(struct mansession *s, const struct message *m)
}
if (!ast_strlen_zero(timeout)) {
- sscanf(timeout, "%d", &to);
+ sscanf(timeout, "%30d", &to);
}
res = ast_masq_park_call(ch1, ch2, to, &parkExt);
diff --git a/main/frame.c b/main/frame.c
index fa443407c..ea902db8c 100644
--- a/main/frame.c
+++ b/main/frame.c
@@ -735,7 +735,7 @@ static char *show_codec_n(struct ast_cli_entry *e, int cmd, struct ast_cli_args
if (a->argc != 4)
return CLI_SHOWUSAGE;
- if (sscanf(a->argv[3],"%d",&codec) != 1)
+ if (sscanf(a->argv[3], "%30d", &codec) != 1)
return CLI_SHOWUSAGE;
for (i = 0; i < 32; i++)
diff --git a/main/http.c b/main/http.c
index a5dd568bf..ce42c4423 100644
--- a/main/http.c
+++ b/main/http.c
@@ -154,7 +154,7 @@ uint32_t ast_http_manid_from_vars(struct ast_variable *headers)
cookies = ast_http_get_cookies(headers);
for (v = cookies; v; v = v->next) {
if (!strcasecmp(v->name, "mansession_id")) {
- sscanf(v->value, "%x", &mngid);
+ sscanf(v->value, "%30x", &mngid);
break;
}
}
diff --git a/main/indications.c b/main/indications.c
index f0aba5ff3..b658e3f51 100644
--- a/main/indications.c
+++ b/main/indications.c
@@ -243,50 +243,50 @@ static struct ast_generator playtones = {
int ast_tone_zone_part_parse(const char *s, struct ast_tone_zone_part *tone_data)
{
- if (sscanf(s, "%u+%u/%u", &tone_data->freq1, &tone_data->freq2,
+ if (sscanf(s, "%30u+%30u/%30u", &tone_data->freq1, &tone_data->freq2,
&tone_data->time) == 3) {
/* f1+f2/time format */
- } else if (sscanf(s, "%u+%u", &tone_data->freq1, &tone_data->freq2) == 2) {
+ } else if (sscanf(s, "%30u+%30u", &tone_data->freq1, &tone_data->freq2) == 2) {
/* f1+f2 format */
tone_data->time = 0;
- } else if (sscanf(s, "%u*%u/%u", &tone_data->freq1, &tone_data->freq2,
+ } else if (sscanf(s, "%30u*%30u/%30u", &tone_data->freq1, &tone_data->freq2,
&tone_data->time) == 3) {
/* f1*f2/time format */
tone_data->modulate = 1;
- } else if (sscanf(s, "%u*%u", &tone_data->freq1, &tone_data->freq2) == 2) {
+ } else if (sscanf(s, "%30u*%30u", &tone_data->freq1, &tone_data->freq2) == 2) {
/* f1*f2 format */
tone_data->time = 0;
tone_data->modulate = 1;
- } else if (sscanf(s, "%u/%u", &tone_data->freq1, &tone_data->time) == 2) {
+ } else if (sscanf(s, "%30u/%30u", &tone_data->freq1, &tone_data->time) == 2) {
/* f1/time format */
tone_data->freq2 = 0;
- } else if (sscanf(s, "%u", &tone_data->freq1) == 1) {
+ } else if (sscanf(s, "%30u", &tone_data->freq1) == 1) {
/* f1 format */
tone_data->freq2 = 0;
tone_data->time = 0;
- } else if (sscanf(s, "M%u+M%u/%u", &tone_data->freq1, &tone_data->freq2,
+ } else if (sscanf(s, "M%30u+M%30u/%30u", &tone_data->freq1, &tone_data->freq2,
&tone_data->time) == 3) {
/* Mf1+Mf2/time format */
tone_data->midinote = 1;
- } else if (sscanf(s, "M%u+M%u", &tone_data->freq1, &tone_data->freq2) == 2) {
+ } else if (sscanf(s, "M%30u+M%30u", &tone_data->freq1, &tone_data->freq2) == 2) {
/* Mf1+Mf2 format */
tone_data->time = 0;
tone_data->midinote = 1;
- } else if (sscanf(s, "M%u*M%u/%u", &tone_data->freq1, &tone_data->freq2,
+ } else if (sscanf(s, "M%30u*M%30u/%30u", &tone_data->freq1, &tone_data->freq2,
&tone_data->time) == 3) {
/* Mf1*Mf2/time format */
tone_data->modulate = 1;
tone_data->midinote = 1;
- } else if (sscanf(s, "M%u*M%u", &tone_data->freq1, &tone_data->freq2) == 2) {
+ } else if (sscanf(s, "M%30u*M%30u", &tone_data->freq1, &tone_data->freq2) == 2) {
/* Mf1*Mf2 format */
tone_data->time = 0;
tone_data->modulate = 1;
tone_data->midinote = 1;
- } else if (sscanf(s, "M%u/%u", &tone_data->freq1, &tone_data->time) == 2) {
+ } else if (sscanf(s, "M%30u/%30u", &tone_data->freq1, &tone_data->time) == 2) {
/* Mf1/time format */
tone_data->freq2 = -1;
tone_data->midinote = 1;
- } else if (sscanf(s, "M%u", &tone_data->freq1) == 1) {
+ } else if (sscanf(s, "M%30u", &tone_data->freq1) == 1) {
/* Mf1 format */
tone_data->freq2 = -1;
tone_data->time = 0;
diff --git a/main/manager.c b/main/manager.c
index f4d9e1e6f..f6501c5e0 100644
--- a/main/manager.c
+++ b/main/manager.c
@@ -2474,7 +2474,7 @@ static int action_waitevent(struct mansession *s, const struct message *m)
}
if (!ast_strlen_zero(timeouts)) {
- sscanf(timeouts, "%i", &timeout);
+ sscanf(timeouts, "%30i", &timeout);
if (timeout < -1) {
timeout = -1;
}
@@ -2962,7 +2962,7 @@ static int action_redirect(struct mansession *s, const struct message *m)
return 0;
}
- if (!ast_strlen_zero(priority) && (sscanf(priority, "%d", &pi) != 1)) {
+ if (!ast_strlen_zero(priority) && (sscanf(priority, "%30d", &pi) != 1)) {
if ((pi = ast_findlabel_extension(NULL, context, exten, priority, NULL)) < 1) {
astman_send_error(s, m, "Invalid priority");
return 0;
@@ -3270,13 +3270,13 @@ static int action_originate(struct mansession *s, const struct message *m)
astman_send_error(s, m, "Channel not specified");
return 0;
}
- if (!ast_strlen_zero(priority) && (sscanf(priority, "%d", &pi) != 1)) {
+ if (!ast_strlen_zero(priority) && (sscanf(priority, "%30d", &pi) != 1)) {
if ((pi = ast_findlabel_extension(NULL, context, exten, priority, NULL)) < 1) {
astman_send_error(s, m, "Invalid priority");
return 0;
}
}
- if (!ast_strlen_zero(timeout) && (sscanf(timeout, "%d", &to) != 1)) {
+ if (!ast_strlen_zero(timeout) && (sscanf(timeout, "%30d", &to) != 1)) {
astman_send_error(s, m, "Invalid timeout");
return 0;
}
@@ -4731,7 +4731,7 @@ static int generic_http_callback(struct ast_tcptls_session_instance *ser,
cookies = ast_http_get_cookies(headers);
for (v = cookies; v; v = v->next) {
if (!strcasecmp(v->name, "mansession_id")) {
- sscanf(v->value, "%x", &ident);
+ sscanf(v->value, "%30x", &ident);
break;
}
}
@@ -4988,7 +4988,7 @@ static int auth_http_callback(struct ast_tcptls_session_instance *ser,
nonce = 0;
goto out_401;
}
- if (sscanf(d.nonce, "%lx", &nonce) != 1) {
+ if (sscanf(d.nonce, "%30lx", &nonce) != 1) {
ast_log(LOG_WARNING, "Received incorrect nonce in Digest <%s>\n", d.nonce);
nonce = 0;
goto out_401;
@@ -5094,7 +5094,7 @@ static int auth_http_callback(struct ast_tcptls_session_instance *ser,
stale = 1;
goto out_401;
} else {
- sscanf(d.nc, "%lx", &nc);
+ sscanf(d.nc, "%30lx", &nc);
if (session->nc >= nc || ((time_now - session->noncetime) > 62) ) {
/*
* Nonce time expired (> 2 minutes) or something wrong with nonce
diff --git a/main/netsock.c b/main/netsock.c
index 2bdf9ccd6..24c6f12b5 100644
--- a/main/netsock.c
+++ b/main/netsock.c
@@ -280,7 +280,7 @@ int ast_str_to_eid(struct ast_eid *eid, const char *s)
unsigned int eid_int[6];
int x;
- if (sscanf(s, "%x:%x:%x:%x:%x:%x", &eid_int[0], &eid_int[1], &eid_int[2],
+ if (sscanf(s, "%2x:%2x:%2x:%2x:%2x:%2x", &eid_int[0], &eid_int[1], &eid_int[2],
&eid_int[3], &eid_int[4], &eid_int[5]) != 6)
return -1;
diff --git a/main/pbx.c b/main/pbx.c
index 2a4ea234d..9570009ee 100644
--- a/main/pbx.c
+++ b/main/pbx.c
@@ -2807,7 +2807,7 @@ static int parse_variable_name(char *var, int *offset, int *length, int *isfunc)
parens--;
} else if (*var == ':' && parens == 0) {
*var++ = '\0';
- sscanf(var, "%d:%d", offset, length);
+ sscanf(var, "%30d:%30d", offset, length);
return 1; /* offset:length valid */
}
}
@@ -7079,7 +7079,7 @@ static int lookup_name(const char *s, const char * const names[], int max)
}
/* Allow months and weekdays to be specified as numbers, as well */
- if (sscanf(s, "%d", &i) == 1 && i >= 1 && i <= max) {
+ if (sscanf(s, "%2d", &i) == 1 && i >= 1 && i <= max) {
/* What the array offset would have been: "1" would be at offset 0 */
return i - 1;
}
@@ -7155,7 +7155,7 @@ static void get_timerange(struct ast_timing *i, char *times)
/* Otherwise expect a range */
while ((part = strsep(&times, "&"))) {
if (!(endpart = strchr(part, '-'))) {
- if (sscanf(part, "%d:%d", &st_h, &st_m) != 2 || st_h < 0 || st_h > 23 || st_m < 0 || st_m > 59) {
+ if (sscanf(part, "%2d:%2d", &st_h, &st_m) != 2 || st_h < 0 || st_h > 23 || st_m < 0 || st_m > 59) {
ast_log(LOG_WARNING, "%s isn't a valid time.\n", part);
continue;
}
@@ -7171,11 +7171,11 @@ static void get_timerange(struct ast_timing *i, char *times)
ast_log(LOG_WARNING, "Invalid time range starting with '%s-'.\n", part);
continue;
}
- if (sscanf(part, "%d:%d", &st_h, &st_m) != 2 || st_h < 0 || st_h > 23 || st_m < 0 || st_m > 59) {
+ if (sscanf(part, "%2d:%2d", &st_h, &st_m) != 2 || st_h < 0 || st_h > 23 || st_m < 0 || st_m > 59) {
ast_log(LOG_WARNING, "'%s' isn't a valid start time.\n", part);
continue;
}
- if (sscanf(endpart, "%d:%d", &endh, &endm) != 2 || endh < 0 || endh > 23 || endm < 0 || endm > 59) {
+ if (sscanf(endpart, "%2d:%2d", &endh, &endm) != 2 || endh < 0 || endh > 23 || endm < 0 || endm > 59) {
ast_log(LOG_WARNING, "'%s' isn't a valid end time.\n", endpart);
continue;
}
@@ -8711,7 +8711,7 @@ static void wait_for_hangup(struct ast_channel *chan, const void *data)
double waitsec;
int waittime;
- if (ast_strlen_zero(data) || (sscanf(data, "%lg", &waitsec) != 1) || (waitsec < 0))
+ if (ast_strlen_zero(data) || (sscanf(data, "%30lg", &waitsec) != 1) || (waitsec < 0))
waitsec = -1;
if (waitsec > -1) {
waittime = waitsec * 1000.0;
@@ -9465,7 +9465,7 @@ int pbx_checkcondition(const char *condition)
int res;
if (ast_strlen_zero(condition)) { /* NULL or empty strings are false */
return 0;
- } else if (sscanf(condition, "%d", &res) == 1) { /* Numbers are evaluated for truth */
+ } else if (sscanf(condition, "%30d", &res) == 1) { /* Numbers are evaluated for truth */
return res;
} else { /* Strings are true */
return 1;
@@ -9880,7 +9880,7 @@ static int pbx_parseable_goto(struct ast_channel *chan, const char *goto_string,
mode = -1;
pri++;
}
- if (sscanf(pri, "%d", &ipri) != 1) {
+ if (sscanf(pri, "%30d", &ipri) != 1) {
if ((ipri = ast_findlabel_extension(chan, context ? context : chan->context, exten ? exten : chan->exten,
pri, chan->cid.cid_num)) < 1) {
ast_log(LOG_WARNING, "Priority '%s' must be a number > 0, or valid label\n", pri);
diff --git a/main/timing.c b/main/timing.c
index d0e6a6d24..ac23d42fa 100644
--- a/main/timing.c
+++ b/main/timing.c
@@ -229,7 +229,7 @@ static char *timing_test(struct ast_cli_entry *e, int cmd, struct ast_cli_args *
if (a->argc == 3) {
unsigned int rate;
- if (sscanf(a->argv[2], "%u", &rate) == 1) {
+ if (sscanf(a->argv[2], "%30u", &rate) == 1) {
test_rate = rate;
} else {
ast_cli(a->fd, "Invalid rate '%s', using default of %u\n", a->argv[2], test_rate);
diff --git a/main/utils.c b/main/utils.c
index 4c0ff3aa8..550d927d0 100644
--- a/main/utils.c
+++ b/main/utils.c
@@ -1826,7 +1826,7 @@ int ast_get_timeval(const char *src, struct timeval *dst, struct timeval _defaul
return -1;
/* only integer at the moment, but one day we could accept more formats */
- if (sscanf(src, "%Lf%n", &dtv, &scanned) > 0) {
+ if (sscanf(src, "%30Lf%n", &dtv, &scanned) > 0) {
dst->tv_sec = dtv;
dst->tv_usec = (dtv - dst->tv_sec) * 1000000.0;
if (consumed)
@@ -1853,7 +1853,7 @@ int ast_get_time_t(const char *src, time_t *dst, time_t _default, int *consumed)
return -1;
/* only integer at the moment, but one day we could accept more formats */
- if (sscanf(src, "%ld%n", &t, &scanned) == 1) {
+ if (sscanf(src, "%30ld%n", &t, &scanned) == 1) {
*dst = t;
if (consumed)
*consumed = scanned;
@@ -2012,7 +2012,7 @@ int ast_parse_digest(const char *digest, struct ast_http_digest *d, int request,
d->qop = 1;
} else if (!strcasecmp(key, "nc")) {
unsigned long u;
- if (sscanf(val, "%lx", &u) != 1) {
+ if (sscanf(val, "%30lx", &u) != 1) {
ast_log(LOG_WARNING, "Incorrect Digest nc value: \"%s\".\n", val);
return -1;
}
diff --git a/pbx/pbx_config.c b/pbx/pbx_config.c
index 990c4db97..69291aa09 100644
--- a/pbx/pbx_config.c
+++ b/pbx/pbx_config.c
@@ -946,7 +946,7 @@ static char *handle_cli_dialplan_add_extension(struct ast_cli_entry *e, int cmd,
if (!strcmp(prior, "hint")) {
iprior = PRIORITY_HINT;
} else {
- if (sscanf(prior, "%d", &iprior) != 1) {
+ if (sscanf(prior, "%30d", &iprior) != 1) {
ast_cli(a->fd, "'%s' is not a valid priority\n", prior);
prior = NULL;
}
@@ -1485,7 +1485,7 @@ process_extension:
} else {
ast_log(LOG_WARNING, "Can't use 'same' priority on the first entry!\n");
}
- } else if (sscanf(pri, "%d", &ipri) != 1 &&
+ } else if (sscanf(pri, "%30d", &ipri) != 1 &&
(ipri = ast_findlabel_extension2(NULL, con, realext, pri, cidmatch)) < 1) {
ast_log(LOG_WARNING, "Invalid priority/label '%s' at line %d\n", pri, v->lineno);
ipri = 0;
@@ -1638,9 +1638,9 @@ static void pbx_load_users(void)
c = dahdicopy;
chan = strsep(&c, ",");
while (chan) {
- if (sscanf(chan, "%d-%d", &start, &finish) == 2) {
+ if (sscanf(chan, "%30d-%30d", &start, &finish) == 2) {
/* Range */
- } else if (sscanf(chan, "%d", &start)) {
+ } else if (sscanf(chan, "%30d", &start)) {
/* Just one */
finish = start;
} else {
diff --git a/pbx/pbx_dundi.c b/pbx/pbx_dundi.c
index ce0f02c59..0af4c844d 100644
--- a/pbx/pbx_dundi.c
+++ b/pbx/pbx_dundi.c
@@ -475,7 +475,7 @@ static int get_mapping_weight(struct dundi_mapping *map)
buf[0] = 0;
if (map->weightstr) {
pbx_substitute_variables_helper(NULL, map->weightstr, buf, sizeof(buf) - 1);
- if (sscanf(buf, "%d", &map->_weight) != 1)
+ if (sscanf(buf, "%30d", &map->_weight) != 1)
map->_weight = MAX_WEIGHT;
}
@@ -1088,7 +1088,7 @@ static int cache_lookup_internal(time_t now, struct dundi_request *req, char *ke
if (expiration > 0) {
ast_debug(1, "Found cache expiring in %d seconds!\n", expiration);
ptr += length + 1;
- while((sscanf(ptr, "%d/%d/%d/%n", &(flags.flags), &weight, &tech, &length) == 3)) {
+ while((sscanf(ptr, "%30d/%30d/%30d/%n", &(flags.flags), &weight, &tech, &length) == 3)) {
ptr += length;
term = strchr(ptr, '|');
if (term) {
@@ -4036,7 +4036,7 @@ static int dundi_result_read(struct ast_channel *chan, const char *cmd, char *da
goto finish;
}
- if (sscanf(args.resultnum, "%u", &num) != 1) {
+ if (sscanf(args.resultnum, "%30u", &num) != 1) {
ast_log(LOG_ERROR, "Invalid value '%s' for resultnum to DUNDIRESULT!\n",
args.resultnum);
goto finish;
@@ -4200,7 +4200,7 @@ static void build_mapping(const char *name, const char *value)
} else if (x >= 4) {
ast_copy_string(map->dcontext, name, sizeof(map->dcontext));
ast_copy_string(map->lcontext, fields[0], sizeof(map->lcontext));
- if ((sscanf(fields[1], "%d", &map->_weight) == 1) && (map->_weight >= 0) && (map->_weight <= MAX_WEIGHT)) {
+ if ((sscanf(fields[1], "%30d", &map->_weight) == 1) && (map->_weight >= 0) && (map->_weight <= MAX_WEIGHT)) {
ast_copy_string(map->dest, fields[3], sizeof(map->dest));
if ((map->tech = str2tech(fields[2])))
map->dead = 0;
@@ -4302,7 +4302,7 @@ static void populate_addr(struct dundi_peer *peer, dundi_eid *eid)
if (c) {
*c = '\0';
c++;
- if (sscanf(c, "%d:%d", &port, &expire) == 2) {
+ if (sscanf(c, "%5d:%30d", &port, &expire) == 2) {
/* Got it! */
inet_aton(data, &peer->addr.sin_addr);
peer->addr.sin_family = AF_INET;
@@ -4399,7 +4399,7 @@ static void build_peer(dundi_eid *eid, struct ast_variable *v, int *globalpcmode
peer->maxms = 0;
} else if (!strcasecmp(v->value, "yes")) {
peer->maxms = DEFAULT_MAXMS;
- } else if (sscanf(v->value, "%d", &peer->maxms) != 1) {
+ } else if (sscanf(v->value, "%30d", &peer->maxms) != 1) {
ast_log(LOG_WARNING, "Qualification of peer '%s' should be 'yes', 'no', or a number of milliseconds at line %d of dundi.conf\n",
ast_eid_to_str(eid_str, sizeof(eid_str), &peer->eid), v->lineno);
peer->maxms = 0;
@@ -4637,14 +4637,14 @@ static int set_config(char *config_file, struct sockaddr_in* sin, int reload)
} else if (!strcasecmp(v->name, "authdebug")) {
authdebug = ast_true(v->value);
} else if (!strcasecmp(v->name, "ttl")) {
- if ((sscanf(v->value, "%d", &x) == 1) && (x > 0) && (x < DUNDI_DEFAULT_TTL)) {
+ if ((sscanf(v->value, "%30d", &x) == 1) && (x > 0) && (x < DUNDI_DEFAULT_TTL)) {
dundi_ttl = x;
} else {
ast_log(LOG_WARNING, "'%s' is not a valid TTL at line %d, must be number from 1 to %d\n",
v->value, v->lineno, DUNDI_DEFAULT_TTL);
}
} else if (!strcasecmp(v->name, "autokill")) {
- if (sscanf(v->value, "%d", &x) == 1) {
+ if (sscanf(v->value, "%30d", &x) == 1) {
if (x >= 0)
global_autokilltimeout = x;
else
@@ -4679,7 +4679,7 @@ static int set_config(char *config_file, struct sockaddr_in* sin, int reload)
} else if (!strcasecmp(v->name, "storehistory")) {
global_storehistory = ast_true(v->value);
} else if (!strcasecmp(v->name, "cachetime")) {
- if ((sscanf(v->value, "%d", &x) == 1)) {
+ if ((sscanf(v->value, "%30d", &x) == 1)) {
dundi_cache_time = x;
} else {
ast_log(LOG_WARNING, "'%s' is not a valid cache time at line %d. Using default value '%d'.\n",
diff --git a/pbx/pbx_loopback.c b/pbx/pbx_loopback.c
index e9001deef..f51ec8204 100644
--- a/pbx/pbx_loopback.c
+++ b/pbx/pbx_loopback.c
@@ -120,7 +120,7 @@ static void loopback_parse(char **newexten, char **newcontext, int *priority, ch
if (!ast_strlen_zero(con))
*newcontext = con;
if (!ast_strlen_zero(pri))
- sscanf(pri, "%d", priority);
+ sscanf(pri, "%30d", priority);
}
static int loopback_exists(struct ast_channel *chan, const char *context, const char *exten, int priority, const char *callerid, const char *data)
diff --git a/pbx/pbx_spool.c b/pbx/pbx_spool.c
index ca739333a..88f81ae8c 100644
--- a/pbx/pbx_spool.c
+++ b/pbx/pbx_spool.c
@@ -172,7 +172,7 @@ static int apply_outgoing(struct outgoing *o, char *fn, FILE *f)
} else if (!strcasecmp(buf, "data")) {
ast_string_field_set(o, data, c);
} else if (!strcasecmp(buf, "maxretries")) {
- if (sscanf(c, "%d", &o->maxretries) != 1) {
+ if (sscanf(c, "%30d", &o->maxretries) != 1) {
ast_log(LOG_WARNING, "Invalid max retries at line %d of %s\n", lineno, fn);
o->maxretries = 0;
}
@@ -183,24 +183,24 @@ static int apply_outgoing(struct outgoing *o, char *fn, FILE *f)
} else if (!strcasecmp(buf, "extension")) {
ast_string_field_set(o, exten, c);
} else if (!strcasecmp(buf, "priority")) {
- if ((sscanf(c, "%d", &o->priority) != 1) || (o->priority < 1)) {
+ if ((sscanf(c, "%30d", &o->priority) != 1) || (o->priority < 1)) {
ast_log(LOG_WARNING, "Invalid priority at line %d of %s\n", lineno, fn);
o->priority = 1;
}
} else if (!strcasecmp(buf, "retrytime")) {
- if ((sscanf(c, "%d", &o->retrytime) != 1) || (o->retrytime < 1)) {
+ if ((sscanf(c, "%30d", &o->retrytime) != 1) || (o->retrytime < 1)) {
ast_log(LOG_WARNING, "Invalid retrytime at line %d of %s\n", lineno, fn);
o->retrytime = 300;
}
} else if (!strcasecmp(buf, "waittime")) {
- if ((sscanf(c, "%d", &o->waittime) != 1) || (o->waittime < 1)) {
+ if ((sscanf(c, "%30d", &o->waittime) != 1) || (o->waittime < 1)) {
ast_log(LOG_WARNING, "Invalid waittime at line %d of %s\n", lineno, fn);
o->waittime = 45;
}
} else if (!strcasecmp(buf, "retry")) {
o->retries++;
} else if (!strcasecmp(buf, "startretry")) {
- if (sscanf(c, "%ld", &o->callingpid) != 1) {
+ if (sscanf(c, "%30ld", &o->callingpid) != 1) {
ast_log(LOG_WARNING, "Unable to retrieve calling PID!\n");
o->callingpid = 0;
}
diff --git a/res/ael/pval.c b/res/ael/pval.c
index 20e5eddc3..dc1678616 100644
--- a/res/ael/pval.c
+++ b/res/ael/pval.c
@@ -860,12 +860,12 @@ static void check_timerange(pval *p)
p->filename, p->startline, p->endline, p->u1.str);
warns++;
}
- if (sscanf(times, "%d:%d", &s1, &s2) != 2) {
+ if (sscanf(times, "%2d:%2d", &s1, &s2) != 2) {
ast_log(LOG_WARNING, "Warning: file %s, line %d-%d: The start time (%s) isn't quite right!\n",
p->filename, p->startline, p->endline, times);
warns++;
}
- if (sscanf(e, "%d:%d", &e1, &e2) != 2) {
+ if (sscanf(e, "%2d:%2d", &e1, &e2) != 2) {
ast_log(LOG_WARNING, "Warning: file %s, line %d-%d: The end time (%s) isn't quite right!\n",
p->filename, p->startline, p->endline, times);
warns++;
@@ -957,7 +957,7 @@ static void check_day(pval *DAY)
c++;
}
/* Find the start */
- if (sscanf(day, "%d", &s) != 1) {
+ if (sscanf(day, "%2d", &s) != 1) {
ast_log(LOG_WARNING, "Warning: file %s, line %d-%d: The start day of month (%s) must be a number!\n",
DAY->filename, DAY->startline, DAY->endline, day);
warns++;
@@ -969,7 +969,7 @@ static void check_day(pval *DAY)
}
s--;
if (c) {
- if (sscanf(c, "%d", &e) != 1) {
+ if (sscanf(c, "%2d", &e) != 1) {
ast_log(LOG_WARNING, "Warning: file %s, line %d-%d: The end day of month (%s) must be a number!\n",
DAY->filename, DAY->startline, DAY->endline, c);
warns++;
diff --git a/res/res_agi.c b/res/res_agi.c
index 164c5ec62..3141ca443 100644
--- a/res/res_agi.c
+++ b/res/res_agi.c
@@ -1606,7 +1606,7 @@ static int handle_waitfordigit(struct ast_channel *chan, AGI *agi, int argc, con
if (argc != 4)
return RESULT_SHOWUSAGE;
- if (sscanf(argv[3], "%d", &to) != 1)
+ if (sscanf(argv[3], "%30d", &to) != 1)
return RESULT_SHOWUSAGE;
res = ast_waitfordigit_full(chan, to, agi->audio, agi->ctrl);
ast_agi_send(agi->fd, chan, "200 result=%d\n", res);
@@ -1725,7 +1725,7 @@ static int handle_controlstreamfile(struct ast_channel *chan, AGI *agi, int argc
stop = argv[4];
}
- if ((argc > 5) && (sscanf(argv[5], "%d", &skipms) != 1)) {
+ if ((argc > 5) && (sscanf(argv[5], "%30d", &skipms) != 1)) {
return RESULT_SHOWUSAGE;
}
@@ -1761,7 +1761,7 @@ static int handle_streamfile(struct ast_channel *chan, AGI *agi, int argc, const
if (argv[3])
edigits = argv[3];
- if ((argc > 4) && (sscanf(argv[4], "%ld", &sample_offset) != 1))
+ if ((argc > 4) && (sscanf(argv[4], "%30ld", &sample_offset) != 1))
return RESULT_SHOWUSAGE;
if (!(fs = ast_openstream(chan, argv[2], chan->language))) {
@@ -1873,7 +1873,7 @@ static int handle_saynumber(struct ast_channel *chan, AGI *agi, int argc, const
if (argc < 4 || argc > 5)
return RESULT_SHOWUSAGE;
- if (sscanf(argv[2], "%d", &num) != 1)
+ if (sscanf(argv[2], "%30d", &num) != 1)
return RESULT_SHOWUSAGE;
res = ast_say_number_full(chan, num, argv[3], chan->language, argc > 4 ? argv[4] : NULL, agi->audio, agi->ctrl);
if (res == 1)
@@ -1888,7 +1888,7 @@ static int handle_saydigits(struct ast_channel *chan, AGI *agi, int argc, const
if (argc != 4)
return RESULT_SHOWUSAGE;
- if (sscanf(argv[2], "%d", &num) != 1)
+ if (sscanf(argv[2], "%30d", &num) != 1)
return RESULT_SHOWUSAGE;
res = ast_say_digit_str_full(chan, argv[2], argv[3], chan->language, agi->audio, agi->ctrl);
@@ -1918,7 +1918,7 @@ static int handle_saydate(struct ast_channel *chan, AGI *agi, int argc, const ch
if (argc != 4)
return RESULT_SHOWUSAGE;
- if (sscanf(argv[2], "%d", &num) != 1)
+ if (sscanf(argv[2], "%30d", &num) != 1)
return RESULT_SHOWUSAGE;
res = ast_say_date(chan, num, argv[3], chan->language);
if (res == 1)
@@ -1933,7 +1933,7 @@ static int handle_saytime(struct ast_channel *chan, AGI *agi, int argc, const ch
if (argc != 4)
return RESULT_SHOWUSAGE;
- if (sscanf(argv[2], "%d", &num) != 1)
+ if (sscanf(argv[2], "%30d", &num) != 1)
return RESULT_SHOWUSAGE;
res = ast_say_time(chan, num, argv[3], chan->language);
if (res == 1)
@@ -2043,7 +2043,7 @@ static int handle_setpriority(struct ast_channel *chan, AGI *agi, int argc, cons
if (argc != 3)
return RESULT_SHOWUSAGE;
- if (sscanf(argv[2], "%d", &pri) != 1) {
+ if (sscanf(argv[2], "%30d", &pri) != 1) {
if ((pri = ast_findlabel_extension(chan, chan->context, chan->exten, argv[2], chan->cid.cid_num)) < 1)
return RESULT_SHOWUSAGE;
}
@@ -2074,7 +2074,7 @@ static int handle_recordfile(struct ast_channel *chan, AGI *agi, int argc, const
if (argc < 6)
return RESULT_SHOWUSAGE;
- if (sscanf(argv[5], "%d", &ms) != 1)
+ if (sscanf(argv[5], "%30d", &ms) != 1)
return RESULT_SHOWUSAGE;
if (argc > 6)
@@ -2115,7 +2115,7 @@ static int handle_recordfile(struct ast_channel *chan, AGI *agi, int argc, const
/* backward compatibility, if no offset given, arg[6] would have been
* caught below and taken to be a beep, else if it is a digit then it is a
* offset */
- if ((argc >6) && (sscanf(argv[6], "%ld", &sample_offset) != 1) && (!strchr(argv[6], '=')))
+ if ((argc >6) && (sscanf(argv[6], "%30ld", &sample_offset) != 1) && (!strchr(argv[6], '=')))
res = ast_streamfile(chan, "beep", chan->language);
if ((argc > 7) && (!strchr(argv[7], '=')))
@@ -2237,7 +2237,7 @@ static int handle_autohangup(struct ast_channel *chan, AGI *agi, int argc, const
if (argc != 3)
return RESULT_SHOWUSAGE;
- if (sscanf(argv[2], "%lf", &timeout) != 1)
+ if (sscanf(argv[2], "%30lf", &timeout) != 1)
return RESULT_SHOWUSAGE;
if (timeout < 0)
timeout = 0;
@@ -2437,7 +2437,7 @@ static int handle_verbose(struct ast_channel *chan, AGI *agi, int argc, const ch
return RESULT_SHOWUSAGE;
if (argv[2])
- sscanf(argv[2], "%d", &level);
+ sscanf(argv[2], "%30d", &level);
ast_verb(level, "%s: %s\n", chan->data, argv[1]);
diff --git a/res/res_config_curl.c b/res/res_config_curl.c
index 928a6ae3b..95b1589e2 100644
--- a/res/res_config_curl.c
+++ b/res/res_config_curl.c
@@ -270,7 +270,7 @@ static int update_curl(const char *url, const char *unused, const char *keyfield
while (*stringp <= ' ') {
stringp++;
}
- sscanf(stringp, "%d", &rowcount);
+ sscanf(stringp, "%30d", &rowcount);
if (rowcount >= 0) {
return (int)rowcount;
@@ -334,7 +334,7 @@ static int update2_curl(const char *url, const char *unused, va_list ap)
while (*stringp <= ' ') {
stringp++;
}
- sscanf(stringp, "%d", &rowcount);
+ sscanf(stringp, "%30d", &rowcount);
if (rowcount >= 0) {
return (int)rowcount;
@@ -395,7 +395,7 @@ static int store_curl(const char *url, const char *unused, va_list ap)
while (*stringp <= ' ') {
stringp++;
}
- sscanf(stringp, "%d", &rowcount);
+ sscanf(stringp, "%30d", &rowcount);
if (rowcount >= 0) {
return rowcount;
@@ -461,7 +461,7 @@ static int destroy_curl(const char *url, const char *unused, const char *keyfiel
while (*stringp <= ' ') {
stringp++;
}
- sscanf(stringp, "%d", &rowcount);
+ sscanf(stringp, "%30d", &rowcount);
if (rowcount >= 0) {
return (int)rowcount;
diff --git a/res/res_config_ldap.c b/res/res_config_ldap.c
index e0cb5946b..aabd18a60 100644
--- a/res/res_config_ldap.c
+++ b/res/res_config_ldap.c
@@ -1597,7 +1597,7 @@ int parse_config(void)
if ((s = ast_variable_retrieve(config, "_general", "url"))) {
ast_copy_string(url, s, sizeof(url));
} else if ((host = ast_variable_retrieve(config, "_general", "host"))) {
- if (!(s = ast_variable_retrieve(config, "_general", "port")) || sscanf(s, "%d", &port) != 1) {
+ if (!(s = ast_variable_retrieve(config, "_general", "port")) || sscanf(s, "%5d", &port) != 1 || port > 65535) {
ast_log(LOG_NOTICE, "No directory port found, using 389 as default.\n");
port = 389;
}
@@ -1618,7 +1618,7 @@ int parse_config(void)
if (!(s = ast_variable_retrieve(config, "_general", "version")) && !(s = ast_variable_retrieve(config, "_general", "protocol"))) {
ast_log(LOG_NOTICE, "No explicit LDAP version found, using 3 as default.\n");
version = 3;
- } else if (sscanf(s, "%d", &version) != 1 || version < 1 || version > 6) {
+ } else if (sscanf(s, "%30d", &version) != 1 || version < 1 || version > 6) {
ast_log(LOG_WARNING, "Invalid LDAP version '%s', using 3 as default.\n", s);
version = 3;
}
diff --git a/res/res_config_pgsql.c b/res/res_config_pgsql.c
index f4f42e6da..9ba6e9768 100644
--- a/res/res_config_pgsql.c
+++ b/res/res_config_pgsql.c
@@ -175,10 +175,10 @@ static struct tables *find_table(const char *tablename)
if (strcmp(flen, "-1") == 0) {
/* Some types, like chars, have the length stored in a different field */
flen = PQgetvalue(result, i, 5);
- sscanf(flen, "%d", &column->len);
+ sscanf(flen, "%30d", &column->len);
column->len -= 4;
} else {
- sscanf(flen, "%d", &column->len);
+ sscanf(flen, "%30d", &column->len);
}
column->name = (char *)column + sizeof(*column);
column->type = (char *)column + sizeof(*column) + strlen(fname) + 1;
diff --git a/res/res_config_sqlite.c b/res/res_config_sqlite.c
index 611330f09..39564100c 100644
--- a/res/res_config_sqlite.c
+++ b/res/res_config_sqlite.c
@@ -805,7 +805,7 @@ static int cdr_handler(struct ast_cdr *cdr)
if (!tmp) {
continue;
}
- if (sscanf(tmp, "%d", &scannum) == 1) {
+ if (sscanf(tmp, "%30d", &scannum) == 1) {
ast_str_append(&sql1, 0, "%s%s", first ? "" : ",", col->name);
ast_str_append(&sql2, 0, "%s%d", first ? "" : ",", scannum);
}
diff --git a/res/res_http_post.c b/res/res_http_post.c
index 74e249b33..4a3416252 100644
--- a/res/res_http_post.c
+++ b/res/res_http_post.c
@@ -320,7 +320,7 @@ static int http_post_callback(struct ast_tcptls_session_instance *ser, const str
cookies = ast_http_get_cookies(headers);
for (var = cookies; var; var = var->next) {
if (!strcasecmp(var->name, "mansession_id")) {
- sscanf(var->value, "%lx", &ident);
+ sscanf(var->value, "%30lx", &ident);
break;
}
}
@@ -347,7 +347,7 @@ static int http_post_callback(struct ast_tcptls_session_instance *ser, const str
fprintf(f, "%s: %s\r\n", var->name, var->value);
if (!strcasecmp(var->name, "Content-Length")) {
- if ((sscanf(var->value, "%u", &content_len)) != 1) {
+ if ((sscanf(var->value, "%30u", &content_len)) != 1) {
ast_log(LOG_ERROR, "Invalid Content-Length in POST request!\n");
fclose(f);
ast_http_error(ser, 500, "Internal server error", "Invalid Content-Length in POST request!");
diff --git a/res/res_limit.c b/res/res_limit.c
index f3ec856d3..03c97b0e5 100644
--- a/res/res_limit.c
+++ b/res/res_limit.c
@@ -179,7 +179,7 @@ static char *handle_cli_ulimit(struct ast_cli_entry *e, int cmd, struct ast_cli_
return CLI_FAILURE;
}
- sscanf(a->argv[2], "%d", &x);
+ sscanf(a->argv[2], "%30d", &x);
rlimit.rlim_max = rlimit.rlim_cur = x;
setrlimit(resource, &rlimit);
return CLI_SUCCESS;
diff --git a/res/res_musiconhold.c b/res/res_musiconhold.c
index 67154fde6..beb9e9578 100644
--- a/res/res_musiconhold.c
+++ b/res/res_musiconhold.c
@@ -651,7 +651,7 @@ static int play_moh_exec(struct ast_channel *chan, const char *data)
AST_STANDARD_APP_ARGS(args, parse);
if (!ast_strlen_zero(args.duration)) {
- if (sscanf(args.duration, "%d", &timeout) == 1) {
+ if (sscanf(args.duration, "%30d", &timeout) == 1) {
timeout *= 1000;
} else {
ast_log(LOG_WARNING, "Invalid MusicOnHold duration '%s'. Will wait indefinitely.\n", args.duration);
diff --git a/res/res_odbc.c b/res/res_odbc.c
index 5a651df01..2fec8884e 100644
--- a/res/res_odbc.c
+++ b/res/res_odbc.c
@@ -771,7 +771,7 @@ static int load_odbc_config(void)
if (ast_false(v->value))
pooling = 1;
} else if (!strcasecmp(v->name, "limit")) {
- sscanf(v->value, "%d", &limit);
+ sscanf(v->value, "%30d", &limit);
if (ast_true(v->value) && !limit) {
ast_log(LOG_WARNING, "Limit should be a number, not a boolean: '%s'. Setting limit to 1023 for ODBC class '%s'.\n", v->value, cat);
limit = 1023;
@@ -781,7 +781,7 @@ static int load_odbc_config(void)
break;
}
} else if (!strcasecmp(v->name, "idlecheck")) {
- sscanf(v->value, "%d", &idlecheck);
+ sscanf(v->value, "%30u", &idlecheck);
} else if (!strcasecmp(v->name, "enabled")) {
enabled = ast_true(v->value);
} else if (!strcasecmp(v->name, "pre-connect")) {
diff --git a/res/res_smdi.c b/res/res_smdi.c
index 0232df12e..3cb7fa32a 100644
--- a/res/res_smdi.c
+++ b/res/res_smdi.c
@@ -1001,7 +1001,7 @@ static int smdi_load(int reload)
baud_rate = B9600;
}
} else if (!strcasecmp(v->name, "msdstrip")) {
- if (!sscanf(v->value, "%d", &msdstrip)) {
+ if (!sscanf(v->value, "%30d", &msdstrip)) {
ast_log(LOG_NOTICE, "Invalid msdstrip value in %s (line %d), using default\n", config_file, v->lineno);
msdstrip = 0;
} else if (0 > msdstrip || msdstrip > 9) {
@@ -1009,7 +1009,7 @@ static int smdi_load(int reload)
msdstrip = 0;
}
} else if (!strcasecmp(v->name, "msgexpirytime")) {
- if (!sscanf(v->value, "%ld", &msg_expiry)) {
+ if (!sscanf(v->value, "%30ld", &msg_expiry)) {
ast_log(LOG_NOTICE, "Invalid msgexpirytime value in %s (line %d), using default\n", config_file, v->lineno);
msg_expiry = SMDI_MSG_EXPIRY_TIME;
}
@@ -1142,7 +1142,7 @@ static int smdi_load(int reload)
continue;
}
} else if (!strcasecmp(v->name, "pollinginterval")) {
- if (sscanf(v->value, "%u", &mwi_monitor.polling_interval) != 1) {
+ if (sscanf(v->value, "%30u", &mwi_monitor.polling_interval) != 1) {
ast_log(LOG_ERROR, "Invalid value for pollinginterval: %s\n", v->value);
mwi_monitor.polling_interval = DEFAULT_POLLING_INTERVAL;
}
@@ -1263,7 +1263,7 @@ static int smdi_msg_retrieve_read(struct ast_channel *chan, const char *cmd, cha
}
if (!ast_strlen_zero(args.timeout)) {
- if (sscanf(args.timeout, "%u", &timeout) != 1) {
+ if (sscanf(args.timeout, "%30u", &timeout) != 1) {
ast_log(LOG_ERROR, "'%s' is not a valid timeout\n", args.timeout);
timeout = SMDI_RETRIEVE_TIMEOUT_DEFAULT;
}
diff --git a/res/snmp/agent.c b/res/snmp/agent.c
index 5a13142d2..f4d4fc6fd 100644
--- a/res/snmp/agent.c
+++ b/res/snmp/agent.c
@@ -808,7 +808,7 @@ static u_char *ast_var_Version(struct variable *vp, oid *name, size_t *length,
return (u_char *)version;
}
case ASTVERTAG:
- sscanf(ast_get_version_num(), "%lu", &long_ret);
+ sscanf(ast_get_version_num(), "%30lu", &long_ret);
return (u_char *)&long_ret;
default:
break;
diff --git a/utils/extconf.c b/utils/extconf.c
index 08465c408..25d7b137f 100644
--- a/utils/extconf.c
+++ b/utils/extconf.c
@@ -3149,7 +3149,7 @@ static int lookup_name(const char *s, char *const names[], int max)
}
/* Allow months and weekdays to be specified as numbers, as well */
- if (sscanf(s, "%d", &i) == 1 && i >= 1 && i <= max) {
+ if (sscanf(s, "%2d", &i) == 1 && i >= 1 && i <= max) {
/* What the array offset would have been: "1" would be at offset 0 */
return i - 1;
}
@@ -3226,7 +3226,7 @@ static void get_timerange(struct ast_timing *i, char *times)
/* Otherwise expect a range */
while ((part = strsep(&times, "&"))) {
if (!(endpart = strchr(part, '-'))) {
- if (sscanf(part, "%d:%d", &st_h, &st_m) != 2 || st_h < 0 || st_h > 23 || st_m < 0 || st_m > 59) {
+ if (sscanf(part, "%2d:%2d", &st_h, &st_m) != 2 || st_h < 0 || st_h > 23 || st_m < 0 || st_m > 59) {
ast_log(LOG_WARNING, "%s isn't a valid time.\n", part);
continue;
}
@@ -3242,11 +3242,11 @@ static void get_timerange(struct ast_timing *i, char *times)
ast_log(LOG_WARNING, "Invalid time range starting with '%s-'.\n", part);
continue;
}
- if (sscanf(part, "%d:%d", &st_h, &st_m) != 2 || st_h < 0 || st_h > 23 || st_m < 0 || st_m > 59) {
+ if (sscanf(part, "%2d:%2d", &st_h, &st_m) != 2 || st_h < 0 || st_h > 23 || st_m < 0 || st_m > 59) {
ast_log(LOG_WARNING, "'%s' isn't a valid start time.\n", part);
continue;
}
- if (sscanf(endpart, "%d:%d", &endh, &endm) != 2 || endh < 0 || endh > 23 || endm < 0 || endm > 59) {
+ if (sscanf(endpart, "%2d:%2d", &endh, &endm) != 2 || endh < 0 || endh > 23 || endm < 0 || endm > 59) {
ast_log(LOG_WARNING, "'%s' isn't a valid end time.\n", endpart);
continue;
}
@@ -5541,7 +5541,7 @@ static int parse_variable_name(char *var, int *offset, int *length, int *isfunc)
parens--;
} else if (*var == ':' && parens == 0) {
*var++ = '\0';
- sscanf(var, "%d:%d", offset, length);
+ sscanf(var, "%30d:%30d", offset, length);
return 1; /* offset:length valid */
}
}
@@ -5945,7 +5945,7 @@ static int pbx_load_config(const char *config_file)
ipri = lastpri;
else
ast_log(LOG_WARNING, "Can't use 'same' priority on the first entry!\n");
- } else if (sscanf(pri, "%d", &ipri) != 1 &&
+ } else if (sscanf(pri, "%30d", &ipri) != 1 &&
(ipri = ast_findlabel_extension2(NULL, con, realext, pri, cidmatch)) < 1) {
ast_log(LOG_WARNING, "Invalid priority/label '%s' at line %d\n", pri, v->lineno);
ipri = 0;
diff --git a/utils/frame.c b/utils/frame.c
index 2900cb065..62dc5f9f0 100644
--- a/utils/frame.c
+++ b/utils/frame.c
@@ -355,7 +355,7 @@ int parsetime(char *string, int *result)
double temp;
char m, s, end;
- k = sscanf(string, "%lf%c%c%c", &temp, &m, &s, &end);
+ k = sscanf(string, "%30lf%1c%1c%1c", &temp, &m, &s, &end);
switch (k)
{
case 0: case EOF: case 4:
@@ -396,7 +396,7 @@ int parsefreq(char *string, double *result)
double temp;
char m, s, end;
- k = sscanf(string, "%lf%c%c%c", &temp, &m, &s, &end);
+ k = sscanf(string, "%30lf%1c%1c%1c", &temp, &m, &s, &end);
switch (k)
{
case 0: case EOF: case 2: case 4:
@@ -476,7 +476,7 @@ int parseintarg( int argcount, char *args[], char *string, int *result)
if ((i = findoption( argcount, args, string)) > 0)
{
switch (sscanf(args[i] + 1 + strlen( string),
- "%d%c", &temp, &c))
+ "%30d%1c", &temp, &c))
{
case 0: case EOF: case 2:
argerrornum(args[i]+1, ME_NOINT);
@@ -510,7 +510,7 @@ int parsedoublearg( int argcount, char *args[], char *string, double *result)
if ((i = findoption( argcount, args, string)) > 0)
{
- switch (sscanf(args[i] + 1 + strlen( string), "%lf%c", &temp, &end))
+ switch (sscanf(args[i] + 1 + strlen( string), "%30lf%1c", &temp, &end))
{
case 0: case EOF: case 2:
argerrornum(args[i]+1, ME_NODOUBLE);
@@ -545,7 +545,7 @@ int parsevolarg( int argcount, char *args[], char *string, double *result)
if ((i = findoption( argcount, args, string)) > 0)
{
switch (sscanf(args[i] + 1 + strlen( string),
- "%lf%c%c%c", &vol, &sbd, &sbb, &end))
+ "%30lf%1c%1c%1c", &vol, &sbd, &sbb, &end))
{
case 0: case EOF: case 4:
weird = TRUE;
@@ -593,7 +593,7 @@ int parsevolume(char *s, double *result)
char sbd, sbb, end;
*result = 1.0;
- k = sscanf(s, "%lf%c%c%c", result, &sbd, &sbb, &end);
+ k = sscanf(s, "%30lf%1c%1c%1c", result, &sbd, &sbb, &end);
switch (k)
{
case 0:
diff --git a/utils/muted.c b/utils/muted.c
index a2e35306b..2aa3bdcea 100644
--- a/utils/muted.c
+++ b/utils/muted.c
@@ -156,7 +156,7 @@ static int load_config(void)
} else if (!strcasecmp(buf, "smoothfade")) {
smoothfade = 1;
} else if (!strcasecmp(buf, "mutelevel")) {
- if (val && (sscanf(val, "%d", &x) == 1) && (x > -1) && (x < 101)) {
+ if (val && (sscanf(val, "%3d", &x) == 1) && (x > -1) && (x < 101)) {
mutelevel = x;
} else
fprintf(stderr, "mutelevel must be a number from 0 (most muted) to 100 (no mute) at line %d\n", lineno);
@@ -216,7 +216,7 @@ static int connect_asterisk(void)
if (ports) {
*ports = '\0';
ports++;
- if ((sscanf(ports, "%d", &port) != 1) || (port < 1) || (port > 65535)) {
+ if ((sscanf(ports, "%5d", &port) != 1) || (port < 1) || (port > 65535)) {
fprintf(stderr, "'%s' is not a valid port number in the hostname\n", ports);
return -1;
}