diff options
author | tilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b> | 2009-08-10 19:15:57 +0000 |
---|---|---|
committer | tilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b> | 2009-08-10 19:15:57 +0000 |
commit | 8cae492343324ae845b8b19d78b253d824eac10f (patch) | |
tree | 3d0ab9b89a652c8bde68776be0e8b945b81aaa6b /apps | |
parent | 9f4c1d7a4e1ee5f0ea1b21af53eb7357366ff661 (diff) |
AST-2009-005
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@211528 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'apps')
-rw-r--r-- | apps/app_adsiprog.c | 6 | ||||
-rw-r--r-- | apps/app_alarmreceiver.c | 2 | ||||
-rw-r--r-- | apps/app_chanspy.c | 4 | ||||
-rw-r--r-- | apps/app_dahdibarge.c | 10 | ||||
-rw-r--r-- | apps/app_dial.c | 4 | ||||
-rw-r--r-- | apps/app_disa.c | 4 | ||||
-rw-r--r-- | apps/app_followme.c | 2 | ||||
-rw-r--r-- | apps/app_macro.c | 8 | ||||
-rw-r--r-- | apps/app_meetme.c | 22 | ||||
-rw-r--r-- | apps/app_mixmonitor.c | 6 | ||||
-rw-r--r-- | apps/app_morsecode.c | 4 | ||||
-rw-r--r-- | apps/app_osplookup.c | 32 | ||||
-rw-r--r-- | apps/app_privacy.c | 8 | ||||
-rw-r--r-- | apps/app_queue.c | 10 | ||||
-rw-r--r-- | apps/app_random.c | 2 | ||||
-rw-r--r-- | apps/app_readfile.c | 2 | ||||
-rw-r--r-- | apps/app_record.c | 4 | ||||
-rw-r--r-- | apps/app_rpt.c | 28 | ||||
-rw-r--r-- | apps/app_setcallerid.c | 2 | ||||
-rw-r--r-- | apps/app_sms.c | 2 | ||||
-rw-r--r-- | apps/app_talkdetect.c | 6 | ||||
-rw-r--r-- | apps/app_verbose.c | 2 | ||||
-rw-r--r-- | apps/app_voicemail.c | 32 | ||||
-rw-r--r-- | apps/app_waitforring.c | 2 | ||||
-rw-r--r-- | apps/app_waitforsilence.c | 6 |
25 files changed, 111 insertions, 99 deletions
diff --git a/apps/app_adsiprog.c b/apps/app_adsiprog.c index 750cc6fc7..14de26ce8 100644 --- a/apps/app_adsiprog.c +++ b/apps/app_adsiprog.c @@ -195,7 +195,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 */ @@ -205,7 +205,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 */ @@ -215,7 +215,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 8afce25d5..7bf98e875 100644 --- a/apps/app_alarmreceiver.c +++ b/apps/app_alarmreceiver.c @@ -125,7 +125,7 @@ static void database_increment( char *key ) return; } - sscanf(value, "%u", &v); + sscanf(value, "%30u", &v); v++; if(option_verbose >= 4) diff --git a/apps/app_chanspy.c b/apps/app_chanspy.c index 91b28137f..45a90ff6d 100644 --- a/apps/app_chanspy.c +++ b/apps/app_chanspy.c @@ -735,7 +735,7 @@ static int chanspy_exec(struct ast_channel *chan, void *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; @@ -820,7 +820,7 @@ static int extenspy_exec(struct ast_channel *chan, void *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 cba85a9b6..e2255185c 100644 --- a/apps/app_dahdibarge.c +++ b/apps/app_dahdibarge.c @@ -277,15 +277,15 @@ static int exec(struct ast_channel *chan, void *data, int dahdimode) if (!ast_strlen_zero(data)) { if (dahdimode) { - 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, "Argument (if specified) must be a channel number, not '%s'\n", (char *) data); ast_module_user_remove(u); return 0; } } else { - if ((sscanf(data, "Zap/%d", &confno) != 1) && - (sscanf(data, "%d", &confno) != 1)) { + if ((sscanf(data, "Zap/%30d", &confno) != 1) && + (sscanf(data, "%30d", &confno) != 1)) { ast_log(LOG_WARNING, "Argument (if specified) must be a channel number, not '%s'\n", (char *) data); ast_module_user_remove(u); return 0; @@ -301,7 +301,7 @@ static int exec(struct ast_channel *chan, void *data, int dahdimode) confstr[0] = '\0'; res = ast_app_getdata(chan, "conf-getchannel",confstr, sizeof(confstr) - 1, 0); if (res <0) goto out; - if (sscanf(confstr, "%d", &confno) != 1) + if (sscanf(confstr, "%30d", &confno) != 1) confno = 0; } if (confno) { diff --git a/apps/app_dial.c b/apps/app_dial.c index 080de00fe..95a2e2440 100644 --- a/apps/app_dial.c +++ b/apps/app_dial.c @@ -1863,7 +1863,7 @@ static int retrydial_exec(struct ast_channel *chan, void *data) if ((dialdata = strchr(announce, '|'))) { *dialdata++ = '\0'; - if (sscanf(dialdata, "%d", &sleep) == 1) { + if (sscanf(dialdata, "%30d", &sleep) == 1) { sleep *= 1000; } else { ast_log(LOG_ERROR, "%s requires the numerical argument <sleep>\n",rapp); @@ -1871,7 +1871,7 @@ static int retrydial_exec(struct ast_channel *chan, void *data) } if ((dialdata = strchr(dialdata, '|'))) { *dialdata++ = '\0'; - if (sscanf(dialdata, "%d", &loops) != 1) { + if (sscanf(dialdata, "%30d", &loops) != 1) { ast_log(LOG_ERROR, "%s requires the numerical argument <loops>\n",rapp); goto done; } diff --git a/apps/app_disa.c b/apps/app_disa.c index f49d19704..3c8bad9d4 100644 --- a/apps/app_disa.c +++ b/apps/app_disa.c @@ -240,7 +240,7 @@ static int disa_exec(struct ast_channel *chan, void *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); @@ -266,7 +266,7 @@ static int disa_exec(struct ast_channel *chan, void *data) ast_log(LOG_DEBUG, "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 ecf178fdd..73e991135 100644 --- a/apps/app_followme.c +++ b/apps/app_followme.c @@ -315,7 +315,7 @@ static int reload_followme(void) featuredigittostr = ast_variable_retrieve(cfg, "general", "featuredigittimeout"); if (!ast_strlen_zero(featuredigittostr)) { - if (!sscanf(featuredigittostr, "%d", &featuredigittimeout)) + if (!sscanf(featuredigittostr, "%30d", &featuredigittimeout)) featuredigittimeout = 5000; } diff --git a/apps/app_macro.c b/apps/app_macro.c index af042913a..5586f24e5 100644 --- a/apps/app_macro.c +++ b/apps/app_macro.c @@ -220,18 +220,18 @@ static int _macro_exec(struct ast_channel *chan, void *data, int exclusive) /* does the user want a deeper rabbit hole? */ s = pbx_builtin_getvar_helper(chan, "MACRO_RECURSION"); if (s) - sscanf(s, "%d", &maxdepth); + sscanf(s, "%30d", &maxdepth); /* Count how many levels deep the rabbit hole goes */ s = pbx_builtin_getvar_helper(chan, "MACRO_DEPTH"); if (s) - sscanf(s, "%d", &depth); + sscanf(s, "%30d", &depth); /* Used for detecting whether to return when a Macro is called from another Macro after hangup */ if (strcmp(chan->exten, "h") == 0) pbx_builtin_setvar_helper(chan, "MACRO_IN_HANGUP", "1"); inhangupc = pbx_builtin_getvar_helper(chan, "MACRO_IN_HANGUP"); if (!ast_strlen_zero(inhangupc)) - sscanf(inhangupc, "%d", &inhangup); + sscanf(inhangupc, "%30d", &inhangup); if (depth >= maxdepth) { ast_log(LOG_ERROR, "Macro(): possible infinite loop detected. Returning early.\n"); @@ -511,7 +511,7 @@ static int _macro_exec(struct ast_channel *chan, void *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 9e6af1865..0e82f33f2 100644 --- a/apps/app_meetme.c +++ b/apps/app_meetme.c @@ -835,7 +835,7 @@ static struct ast_conference *build_conf(char *confno, char *pin, char *pinadmin 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: @@ -1403,7 +1403,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, "%30d", &confno_int) == 1) && (confno_int >= 0 && confno_int < 1024)) conf_map[confno_int] = 0; conf_free(conf); res = 1; @@ -1537,7 +1537,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; } @@ -2794,7 +2794,7 @@ static int conf_exec(struct ast_channel *chan, void *data) if (!res) ast_waitstream(chan, ""); } else { - if (sscanf(confno, "%d", &confno_int) == 1) { + if (sscanf(confno, "%30d", &confno_int) == 1) { res = ast_streamfile(chan, "conf-enteringno", chan->language); if (!res) { ast_waitstream(chan, ""); @@ -2917,7 +2917,7 @@ static struct ast_conf_user *find_user(struct ast_conference *conf, char *caller 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) @@ -3251,7 +3251,7 @@ static void load_config_meetme(void) return; 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)) { @@ -4707,7 +4707,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; @@ -4783,13 +4783,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; @@ -4838,13 +4838,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_mixmonitor.c b/apps/app_mixmonitor.c index 8d86db740..3f784f730 100644 --- a/apps/app_mixmonitor.c +++ b/apps/app_mixmonitor.c @@ -451,7 +451,7 @@ static int mixmonitor_exec(struct ast_channel *chan, void *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); @@ -461,7 +461,7 @@ static int mixmonitor_exec(struct ast_channel *chan, void *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); @@ -471,7 +471,7 @@ static int mixmonitor_exec(struct ast_channel *chan, void *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 aec946a09..8be4861b0 100644 --- a/apps/app_morsecode.c +++ b/apps/app_morsecode.c @@ -123,13 +123,13 @@ static int morsecode_exec(struct ast_channel *chan, void *data) /* Use variable MORESEDITLEN, if set (else 80) */ 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; } /* Use variable MORSETONE, if set (else 800) */ 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; } diff --git a/apps/app_osplookup.c b/apps/app_osplookup.c index ad2ce5065..6cd035299 100644 --- a/apps/app_osplookup.c +++ b/apps/app_osplookup.c @@ -208,7 +208,7 @@ static int osp_create_provider(struct ast_config* cfg, const char* 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_log(LOG_DEBUG, "OSP: maxconnections '%d'\n", t); } else { @@ -216,7 +216,7 @@ static int osp_create_provider(struct ast_config* cfg, const char* 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_log(LOG_DEBUG, "OSP: retrydelay '%d'\n", t); } else { @@ -224,7 +224,7 @@ static int osp_create_provider(struct ast_config* cfg, const char* 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_log(LOG_DEBUG, "OSP: retrylimit '%d'\n", t); } else { @@ -232,7 +232,7 @@ static int osp_create_provider(struct ast_config* cfg, const char* 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_log(LOG_DEBUG, "OSP: timeout '%d'\n", t); } else { @@ -243,7 +243,7 @@ static int osp_create_provider(struct ast_config* cfg, const char* provider) ast_copy_string(p->source, v->value, sizeof(p->source)); ast_log(LOG_DEBUG, "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_log(LOG_DEBUG, "OSP: authpolicy '%d'\n", t); } else { @@ -1051,11 +1051,11 @@ static int osplookup_exec(struct ast_channel* chan, void* data) 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), "OSPPEERIP")) { @@ -1177,7 +1177,7 @@ static int ospnext_exec(struct ast_channel* chan, void* data) 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_log(LOG_DEBUG, "OSPNext: cause '%d'\n", cause); @@ -1195,19 +1195,19 @@ static int ospnext_exec(struct ast_channel* chan, void* data) 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), "OSPRESULTS")) { - if (sscanf(ast_var_value(current), "%d", &result.numresults) != 1) { + if (sscanf(ast_var_value(current), "%30d", &result.numresults) != 1) { result.numresults = 0; } } @@ -1322,11 +1322,11 @@ static int ospfinished_exec(struct ast_channel* chan, void* data) 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 && @@ -1343,7 +1343,7 @@ static int ospfinished_exec(struct ast_channel* chan, void* data) ast_log(LOG_DEBUG, "OSPFinish: OSPOUTHANDLE '%d'\n", outhandle); ast_log(LOG_DEBUG, "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_log(LOG_DEBUG, "OSPFinish: cause '%d'\n", cause); @@ -1435,7 +1435,7 @@ static int osp_load(void) 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 5da93eb40..65bd625d7 100644 --- a/apps/app_privacy.c +++ b/apps/app_privacy.c @@ -115,13 +115,13 @@ static int privacy_exec (struct ast_channel *chan, void *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"); @@ -138,14 +138,14 @@ static int privacy_exec (struct ast_channel *chan, void *data) cfg = ast_config_load(PRIV_CONFIG); if (cfg && (s = ast_variable_retrieve(cfg, "general", "maxretries"))) { - if (sscanf(s, "%d", &x) == 1) + if (sscanf(s, "%30d", &x) == 1) maxretries = x; else ast_log(LOG_WARNING, "Invalid max retries argument\n"); } if (cfg && (s = ast_variable_retrieve(cfg, "general", "minlength"))) { - if (sscanf(s, "%d", &x) == 1) + if (sscanf(s, "%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 4d2eb6204..63cb4b082 100644 --- a/apps/app_queue.c +++ b/apps/app_queue.c @@ -3822,7 +3822,7 @@ static int aqm_exec(struct ast_channel *chan, void *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; } @@ -3961,7 +3961,7 @@ static int queue_exec(struct ast_channel *chan, void *data) /* Get the priority from the variable ${QUEUE_PRIO} */ 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) { if (option_debug) ast_log(LOG_DEBUG, "%s: Got priority %d from ${QUEUE_PRIO}.\n", chan->name, prio); @@ -3978,7 +3978,7 @@ static int queue_exec(struct ast_channel *chan, void *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) { if (option_debug) ast_log(LOG_DEBUG, "%s: Got max penalty %d from ${QUEUE_MAX_PENALTY}.\n", chan->name, max_penalty); @@ -4865,7 +4865,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)) @@ -4969,7 +4969,7 @@ static int handle_queue_add_member(int fd, int argc, char *argv[]) queuename = argv[5]; interface = argv[3]; if (argc >= 8) { - if (sscanf(argv[7], "%d", &penalty) == 1) { + if (sscanf(argv[7], "%30d", &penalty) == 1) { if (penalty < 0) { ast_cli(fd, "Penalty must be >= 0\n"); penalty = 0; diff --git a/apps/app_random.c b/apps/app_random.c index 8484f656d..0d036413d 100644 --- a/apps/app_random.c +++ b/apps/app_random.c @@ -71,7 +71,7 @@ static int random_exec(struct ast_channel *chan, void *data) s = ast_strdupa(data); prob = strsep(&s,":"); - if ((!prob) || (sscanf(prob, "%d", &probint) != 1)) + if ((!prob) || (sscanf(prob, "%30d", &probint) != 1)) probint = 0; if (!deprecated) { diff --git a/apps/app_readfile.c b/apps/app_readfile.c index 7e43a3806..113a639cf 100644 --- a/apps/app_readfile.c +++ b/apps/app_readfile.c @@ -80,7 +80,7 @@ static int readfile_exec(struct ast_channel *chan, void *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 23e1a9a85..075fd7c28 100644 --- a/apps/app_record.c +++ b/apps/app_record.c @@ -140,7 +140,7 @@ static int record_exec(struct ast_channel *chan, void *data) return -1; } if (silstr) { - if ((sscanf(silstr, "%d", &i) == 1) && (i > -1)) { + if ((sscanf(silstr, "%30d", &i) == 1) && (i > -1)) { silence = i * 1000; } else if (!ast_strlen_zero(silstr)) { ast_log(LOG_WARNING, "'%s' is not a valid silence duration\n", silstr); @@ -148,7 +148,7 @@ static int record_exec(struct ast_channel *chan, void *data) } if (maxstr) { - if ((sscanf(maxstr, "%d", &i) == 1) && (i > -1)) + if ((sscanf(maxstr, "%30d", &i) == 1) && (i > -1)) /* Convert duration to milliseconds */ maxduration = i * 1000; else if (!ast_strlen_zero(maxstr)) diff --git a/apps/app_rpt.c b/apps/app_rpt.c index dd4cd3a7d..2f4af8ca9 100644 --- a/apps/app_rpt.c +++ b/apps/app_rpt.c @@ -1522,7 +1522,7 @@ int ret; if (str == NULL) return -1; /* leave this %i alone, non-base-10 input is useful here */ - if (sscanf(str,"%i",&ret) != 1) return -1; + if (sscanf(str,"%30i",&ret) != 1) return -1; return ret; } @@ -1697,7 +1697,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; @@ -2641,7 +2641,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, &litude) != 4) + if(sscanf(tonesubset,"(%30d,%30d,%30d,%30d", &f1, &f2, &duration, &litude) != 4) break; res = play_tone_pair(chan, f1, f2, duration, amplitude); if(res) @@ -3983,7 +3983,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" */ @@ -5303,6 +5303,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],cmd[300] = "",dest[300],src[300],c; int seq, res; struct rpt_link *l; @@ -5336,7 +5338,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; @@ -5346,7 +5350,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; @@ -8332,6 +8338,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; @@ -8342,7 +8350,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; @@ -8351,7 +8361,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; diff --git a/apps/app_setcallerid.c b/apps/app_setcallerid.c index fb060f11b..2877d00e1 100644 --- a/apps/app_setcallerid.c +++ b/apps/app_setcallerid.c @@ -72,7 +72,7 @@ static int setcallerid_pres_exec(struct ast_channel *chan, void *data) u = ast_module_user_add(chan); /* 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 cd445456e..b1bc84988 100644 --- a/apps/app_sms.c +++ b/apps/app_sms.c @@ -747,7 +747,7 @@ static void sms_readfile (sms_t * h, char *fn) H, M, S; - if (sscanf (p, "%d-%d-%dT%d:%d:%d", &Y, &m, &d, &H, &M, &S) == 6) + if (sscanf (p, "%30d-%30d-%30dT%30d:%30d:%30d", &Y, &m, &d, &H, &M, &S) == 6) { struct tm t; t.tm_year = Y - 1900; diff --git a/apps/app_talkdetect.c b/apps/app_talkdetect.c index 79cbbd5d0..bf35787bb 100644 --- a/apps/app_talkdetect.c +++ b/apps/app_talkdetect.c @@ -89,15 +89,15 @@ static int background_detect_exec(struct ast_channel *chan, void *data) strsep(&stringp, "|"); options = strsep(&stringp, "|"); if (options) { - if ((sscanf(options, "%d", &x) == 1) && (x > 0)) + if ((sscanf(options, "%30d", &x) == 1) && (x > 0)) sil = x; options = strsep(&stringp, "|"); if (options) { - if ((sscanf(options, "%d", &x) == 1) && (x > 0)) + if ((sscanf(options, "%30d", &x) == 1) && (x > 0)) min = x; options = strsep(&stringp, "|"); if (options) { - if ((sscanf(options, "%d", &x) == 1) && (x > 0)) + if ((sscanf(options, "%30d", &x) == 1) && (x > 0)) max = x; } } diff --git a/apps/app_verbose.c b/apps/app_verbose.c index f9bcfd116..3bd841ad8 100644 --- a/apps/app_verbose.c +++ b/apps/app_verbose.c @@ -65,7 +65,7 @@ static int verbose_exec(struct ast_channel *chan, void *data) vtext = ast_strdupa(data); tmp = strsep(&vtext, "|"); if (vtext) { - if (sscanf(tmp, "%d", &vsize) != 1) { + if (sscanf(tmp, "%30d", &vsize) != 1) { vsize = 0; ast_log(LOG_WARNING, "'%s' is not a verboser number\n", vtext); } diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c index 5625b01c8..2213f8855 100644 --- a/apps/app_voicemail.c +++ b/apps/app_voicemail.c @@ -647,7 +647,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(LOG_WARNING, "Invalid min duration for say duration\n"); @@ -672,7 +672,7 @@ static void apply_option(struct ast_vm_user *vmu, const char *var, const char *v vmu->maxmsg = 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); } @@ -2421,7 +2421,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(LOG_WARNING, "Failed to read message count!\n"); SQLFreeHandle (SQL_HANDLE_STMT, stmt); ast_odbc_release_obj(obj); @@ -2467,7 +2467,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(LOG_WARNING, "Failed to read message count!\n"); SQLFreeHandle (SQL_HANDLE_STMT, stmt); ast_odbc_release_obj(obj); @@ -3034,7 +3034,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) { time_t ttime = inttime; struct tm tm; ast_localtime(&ttime, &tm, NULL); @@ -3354,7 +3354,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) { time_t ttime = inttime; struct tm tm; ast_localtime(&ttime, &tm, NULL); @@ -7373,7 +7373,7 @@ static int vm_execmain(struct ast_channel *chan, void *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(LOG_WARNING, "Invalid value '%s' provided for record gain option\n", opts[OPT_ARG_RECORDGAIN]); ast_module_user_remove(u); return -1; @@ -7387,7 +7387,7 @@ static int vm_execmain(struct ast_channel *chan, void *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(LOG_WARNING, "Invalid value '%s' provided for folder autoplay option\n", opts[OPT_ARG_PLAYFOLDER]); } } else { @@ -7924,7 +7924,7 @@ static int vm_exec(struct ast_channel *chan, void *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]); ast_module_user_remove(u); return -1; @@ -8345,7 +8345,7 @@ static int load_config(void) volgain = 0.0; if ((volgainstr = ast_variable_retrieve(cfg, "general", "volgain"))) - sscanf(volgainstr, "%lf", &volgain); + sscanf(volgainstr, "%30lf", &volgain); #ifdef ODBC_STORAGE strcpy(odbc_database, "asterisk"); @@ -8499,7 +8499,7 @@ static int load_config(void) vmmaxmessage = 0; if ((s = ast_variable_retrieve(cfg, "general", "maxmessage"))) { - if (sscanf(s, "%d", &x) == 1) { + if (sscanf(s, "%30d", &x) == 1) { vmmaxmessage = x; } else { ast_log(LOG_WARNING, "Invalid max message time length\n"); @@ -8508,7 +8508,7 @@ static int load_config(void) vmminmessage = 0; if ((s = ast_variable_retrieve(cfg, "general", "minmessage"))) { - if (sscanf(s, "%d", &x) == 1) { + if (sscanf(s, "%30d", &x) == 1) { vmminmessage = x; if (maxsilence / 1000 >= vmminmessage) ast_log(LOG_WARNING, "maxsilence should be less than minmessage or you may get empty messages\n"); @@ -8523,7 +8523,7 @@ static int load_config(void) skipms = 3000; if ((s = ast_variable_retrieve(cfg, "general", "maxgreet"))) { - if (sscanf(s, "%d", &x) == 1) { + if (sscanf(s, "%30d", &x) == 1) { maxgreet = x; } else { ast_log(LOG_WARNING, "Invalid max message greeting length\n"); @@ -8531,7 +8531,7 @@ static int load_config(void) } if ((s = ast_variable_retrieve(cfg, "general", "skipms"))) { - if (sscanf(s, "%d", &x) == 1) { + if (sscanf(s, "%30d", &x) == 1) { skipms = x; } else { ast_log(LOG_WARNING, "Invalid skipms value\n"); @@ -8540,7 +8540,7 @@ static int load_config(void) maxlogins = 3; if ((s = ast_variable_retrieve(cfg, "general", "maxlogins"))) { - if (sscanf(s, "%d", &x) == 1) { + if (sscanf(s, "%30d", &x) == 1) { maxlogins = x; } else { ast_log(LOG_WARNING, "Invalid max failed login attempts\n"); @@ -8629,7 +8629,7 @@ static int load_config(void) saydurationminfo = 2; if ((astsaydurationminfo = ast_variable_retrieve(cfg, "general", "saydurationm"))) { - if (sscanf(astsaydurationminfo, "%d", &x) == 1) { + if (sscanf(astsaydurationminfo, "%30d", &x) == 1) { saydurationminfo = x; } else { ast_log(LOG_WARNING, "Invalid min duration for say duration\n"); diff --git a/apps/app_waitforring.c b/apps/app_waitforring.c index a4f69ae77..c4cea20e8 100644 --- a/apps/app_waitforring.c +++ b/apps/app_waitforring.c @@ -60,7 +60,7 @@ static int waitforring_exec(struct ast_channel *chan, void *data) int res = 0; int ms; - if (!data || (sscanf(data, "%d", &ms) != 1)) { + if (!data || (sscanf(data, "%30d", &ms) != 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 40435fb5c..d0e02e062 100644 --- a/apps/app_waitforsilence.c +++ b/apps/app_waitforsilence.c @@ -167,9 +167,9 @@ static int waitforsilence_exec(struct ast_channel *chan, void *data) res = ast_answer(chan); /* Answer the channel */ - if (!data || ( (sscanf(data, "%d|%d|%d", &silencereqd, &iterations, &timeout) != 3) && - (sscanf(data, "%d|%d", &silencereqd, &iterations) != 2) && - (sscanf(data, "%d", &silencereqd) != 1) ) ) { + if (!data || ( (sscanf(data, "%30d|%30d|%30d", &silencereqd, &iterations, &timeout) != 3) && + (sscanf(data, "%30d|%30d", &silencereqd, &iterations) != 2) && + (sscanf(data, "%30d", &silencereqd) != 1) ) ) { ast_log(LOG_WARNING, "Using default value of 1000ms, 1 iteration, no timeout\n"); } |