]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
AST-2009-005
authorTilghman Lesher <tilghman@meg.abyt.es>
Mon, 10 Aug 2009 19:30:55 +0000 (19:30 +0000)
committerTilghman Lesher <tilghman@meg.abyt.es>
Mon, 10 Aug 2009 19:30:55 +0000 (19:30 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@211569 65c4cc65-6c06-0410-ace0-fbb531ad65f3

92 files changed:
agi/eagi-sphinx-test.c
agi/eagi-test.c
apps/app_adsiprog.c
apps/app_alarmreceiver.c
apps/app_chanspy.c
apps/app_dahdibarge.c
apps/app_disa.c
apps/app_followme.c
apps/app_macro.c
apps/app_meetme.c
apps/app_minivm.c
apps/app_mixmonitor.c
apps/app_morsecode.c
apps/app_osplookup.c
apps/app_privacy.c
apps/app_queue.c
apps/app_readfile.c
apps/app_record.c
apps/app_rpt.c
apps/app_setcallerid.c
apps/app_sms.c
apps/app_stack.c
apps/app_talkdetect.c
apps/app_verbose.c
apps/app_voicemail.c
apps/app_waitforring.c
apps/app_waitforsilence.c
apps/app_waituntil.c
cdr/cdr_adaptive_odbc.c
cdr/cdr_pgsql.c
channels/chan_agent.c
channels/chan_dahdi.c
channels/chan_iax2.c
channels/chan_mgcp.c
channels/chan_misdn.c
channels/chan_oss.c
channels/chan_phone.c
channels/chan_sip.c
channels/chan_skinny.c
channels/chan_usbradio.c
channels/iax2-provision.c
channels/misdn_config.c
codecs/codec_speex.c
doc/CODING-GUIDELINES
funcs/func_channel.c
funcs/func_cut.c
funcs/func_dialplan.c
funcs/func_enum.c
funcs/func_math.c
funcs/func_odbc.c
funcs/func_rand.c
funcs/func_speex.c
funcs/func_strings.c
funcs/func_timeout.c
main/acl.c
main/asterisk.c
main/cdr.c
main/channel.c
main/cli.c
main/config.c
main/dnsmgr.c
main/dsp.c
main/enum.c
main/features.c
main/frame.c
main/http.c
main/indications.c
main/manager.c
main/netsock.c
main/pbx.c
main/timing.c
main/utils.c
pbx/dundi-parser.c
pbx/pbx_config.c
pbx/pbx_dundi.c
pbx/pbx_loopback.c
pbx/pbx_spool.c
res/ael/pval.c
res/res_agi.c
res/res_config_curl.c
res/res_config_ldap.c
res/res_config_pgsql.c
res/res_config_sqlite.c
res/res_http_post.c
res/res_limit.c
res/res_musiconhold.c
res/res_odbc.c
res/res_smdi.c
res/snmp/agent.c
utils/extconf.c
utils/frame.c
utils/muted.c

index 4d13db507917ceae0722dcf7c90b7e06b7ccb812..359360286f1fe8a1fff2253d723ff53d713e56a8 100644 (file)
@@ -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) {
index c40b85d1eabdc5c134e0f51439aae4987bd5bdca..dc2d7fa1ab14720e678c7b74cd91993e2fa63d8a 100644 (file)
@@ -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) {
index 159031f9c5553ae309671e05c4737e6c926d9a51..0ed0657cbb838c5066eddb2b8b38c29a40f4d4b7 100644 (file)
@@ -187,7 +187,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 */
@@ -197,7 +197,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 */
@@ -207,7 +207,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 */
index 37d8177429f4907799aabe397f7062287785f3f9..4f4f545ee696a9967f3f6ba3ad86f3ccc11525d9 100644 (file)
@@ -115,7 +115,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);
index 8340f7e12ce9d323a6fee8059e525b4643ec351e..7317e3578530afbd8e611727c4ebfadc56133825 100644 (file)
@@ -937,7 +937,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;
@@ -1036,7 +1036,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;
index f16b4dea69b78d8020d110fc72cacbe642a6d785..a7aec81f2c3d94ffdbb685775262f891584bba70 100644 (file)
@@ -258,8 +258,8 @@ static int conf_exec(struct ast_channel *chan, void *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;
                }
@@ -273,7 +273,7 @@ static int conf_exec(struct ast_channel *chan, void *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) {
index f85a5eec131c0c18ad9e1040c1a014eb792d22cc..576398b4fb0a4aa0fb7102c7662d13e3d873c19b 100644 (file)
@@ -223,7 +223,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);
@@ -249,7 +249,7 @@ static int disa_exec(struct ast_channel *chan, void *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)) {
index cacfed90098ddc351473850384ee1d4f20169a2c..f5857bf909a85862f7abdaccab46610244ee5387 100644 (file)
@@ -307,7 +307,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;
        }
 
index f1d87b3540a3b8536e6f0646912ccdf38a3c56be..50b739a3dce196bede3a67d69f3a3b96d5b74a64 100644 (file)
@@ -208,12 +208,12 @@ static int _macro_exec(struct ast_channel *chan, void *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 */
@@ -221,7 +221,7 @@ static int _macro_exec(struct ast_channel *chan, void *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);
 
@@ -474,7 +474,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;
                                        }
index 1d5d961cc1cb3e878a675abf42b5d27484d38924..45a15a45a107b5d8af2959f89d41ee50cf91711f 100644 (file)
@@ -900,7 +900,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:
@@ -1527,7 +1527,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);
                res = 1;
@@ -1691,7 +1691,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;
        }
@@ -3290,7 +3290,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) {
                                        if (!ast_test_flag(&confflags, CONFFLAG_QUIET)) {
                                                res = ast_streamfile(chan, "conf-enteringno", chan->language);
                                                if (!res) {
@@ -3417,7 +3417,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)
@@ -3892,7 +3892,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)) {
@@ -3909,19 +3909,19 @@ 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;
                } 
@@ -5487,7 +5487,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;
@@ -5563,13 +5563,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;
@@ -5618,13 +5618,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;
index 731f0602842f2f9b026038c6084c37f532477b55..f9b1224d3441a0ae548d664f04f58634629fb4e9 100644 (file)
@@ -1735,7 +1735,7 @@ static int minivm_record_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]);
                                return -1;
                        } else 
@@ -2160,7 +2160,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);
                }
@@ -2330,7 +2330,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 ++;
@@ -2338,7 +2338,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");
index 213ec3c62d0efdd88a80d6d86a3d74c5e311cf2b..f246b371778939e56f88da31efe1657c4091109b 100644 (file)
@@ -426,7 +426,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);
@@ -436,7 +436,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);
@@ -446,7 +446,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);
index 455ee04c1b8b535d4301b796b27319ce0c7d3240..7327664e558a89df13d863bedca171da94b8190f 100644 (file)
@@ -113,7 +113,7 @@ static int morsecode_exec(struct ast_channel *chan, void *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);
@@ -121,7 +121,7 @@ static int morsecode_exec(struct ast_channel *chan, void *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);
index d9e29a2e0f587835ed306a41e7051e8a4abe418b..808f0e0047f349de7d2216a4969589bade83ed4f 100644 (file)
@@ -247,7 +247,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 {
@@ -255,7 +255,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 {
@@ -263,7 +263,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 {
@@ -271,7 +271,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 {
@@ -282,7 +282,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 {
@@ -1392,11 +1392,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")) {
@@ -1533,7 +1533,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);
@@ -1551,23 +1551,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;
                        }
                }
@@ -1686,11 +1686,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 &&
@@ -1707,7 +1707,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);
@@ -1799,7 +1799,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;
index 09f698861bf8ab7c57f1f8864ea7e25c40a2d543..78f53aa4fe7ca7d0a3fc612fb8959c846e22c5a0 100644 (file)
@@ -92,13 +92,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");
index 87ccc8f651191cab1fe01f0e74e4a3d3791added..5f12fb668e533286d1d1ca39582d519657daaa5d 100644 (file)
@@ -4653,7 +4653,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;
                }
@@ -4815,7 +4815,7 @@ static int queue_exec(struct ast_channel *chan, void *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",
@@ -4830,7 +4830,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) {
                        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",
@@ -4842,7 +4842,7 @@ static int queue_exec(struct ast_channel *chan, void *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",
@@ -6115,7 +6115,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))
@@ -6308,7 +6308,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;
index 8762ef860cffb38f4ce31ebd93aba9c7c212439b..d7a11427615dd97e9f8f7f91ad867d2939002837 100644 (file)
@@ -73,7 +73,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;
                }
index fe50edeeec840b2aa63630e2aaa6c101e8d71b3d..32cb85098b0052942b6c24b7aeb861da34834430 100644 (file)
@@ -146,7 +146,7 @@ static int record_exec(struct ast_channel *chan, void *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);
@@ -154,7 +154,7 @@ static int record_exec(struct ast_channel *chan, void *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))
index 5a6949b261d167caf16548c659077958dfb9089a..4685116a77db31053ad0e56b65b41ea8d9807e62 100644 (file)
@@ -2101,7 +2101,8 @@ 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;
 }
 
@@ -2325,7 +2326,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;
@@ -3640,7 +3641,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)
@@ -5065,7 +5066,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" */
@@ -6673,10 +6674,12 @@ static int collect_function_digits(struct rpt *myrpt, char *digits,
 static void handle_link_data(struct rpt *myrpt, struct rpt_link *mylink,
        char *str)
 {
-char   tmp[512],tmp1[512],cmd[300] = "",dest[300],src[300],c;
-int    i,seq, res, ts;
-struct rpt_link *l;
-struct ast_frame wf;
+       /* 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;
+       struct  ast_frame wf;
 
        wf.frametype = AST_FRAME_TEXT;
        wf.subclass = 0;
@@ -6711,7 +6714,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;
@@ -6819,7 +6822,7 @@ struct    ast_frame wf;
        }
        if (tmp[0] == 'I')
        {
-               if (sscanf(tmp,"%s %s %x",cmd,src,&seq) != 3)
+               if (sscanf(tmp, "%299s %299s %30x", cmd, src, &seq) != 3)
                {
                        ast_log(LOG_WARNING, "Unable to parse ident string %s\n",str);
                        return;
@@ -6829,7 +6832,7 @@ struct    ast_frame wf;
        }
        else
        {
-               if (sscanf(tmp,"%s %s %s %d %c",cmd,dest,src,&seq,&c) != 5)
+               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;
@@ -10224,8 +10227,10 @@ int    ret,res = 0,src;
 
 static int handle_remote_data(struct rpt *myrpt, char *str)
 {
-char   tmp[300],cmd[300],dest[300],src[300],c;
-int    seq,res;
+       /* 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;
 
        /* put string in our buffer */
        strncpy(tmp,str,sizeof(tmp) - 1);
@@ -10248,7 +10253,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;
@@ -11879,7 +11886,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);
index f1c9df3cbda6d0b2db88852555bd8ebc3ecd501c..cd8016e215344fdcc45918ed5e2a9278880be685 100644 (file)
@@ -70,7 +70,7 @@ static int setcallerid_pres_exec(struct ast_channel *chan, void *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);
        }
 
index 1a66a12f8781cb413ad37096dd697471a0bb7f1b..6ada1d4f312759727e25126fef61ccb6694ef9a6 100644 (file)
@@ -856,7 +856,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;
index 444aa404784257aab577631727607aa3bbcc41f8..743113b6b94a7e3f3a8ecbe6844a5c801af24db0 100644 (file)
@@ -420,7 +420,7 @@ static int handle_gosub(struct ast_channel *chan, AGI *agi, int argc, char **arg
 
        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]);
index 9bc5e84dd1a394f168c32f12bb5e0a5d32963827..f0525f379ac6b005af19a5ccef5699869063c5bc 100644 (file)
@@ -87,16 +87,16 @@ static int background_detect_exec(struct ast_channel *chan, void *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;
        }
 
index 525cc1c55c59d66916a0081586b63e2636db21c3..53e5ea802d0a66e75037db687be73315f89a015d 100644 (file)
@@ -65,7 +65,7 @@ static int verbose_exec(struct ast_channel *chan, void *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);
        }
index 91c3de99476ae18dd57a5012db1e0b4c337bc4ac..b34899bd71829e4ea1907163428062b027cfc31c 100644 (file)
@@ -803,7 +803,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");
@@ -837,7 +837,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;
@@ -852,7 +852,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);
        }
@@ -2976,7 +2976,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);
@@ -3031,7 +3031,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);
@@ -3449,7 +3449,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);
@@ -3773,7 +3773,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);
@@ -4136,7 +4136,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);
@@ -8832,7 +8832,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(AST_LOG_WARNING, "Invalid value '%s' provided for record gain option\n", opts[OPT_ARG_RECORDGAIN]);
                                                return -1;
                                        } else {
@@ -8845,7 +8845,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(AST_LOG_WARNING, "Invalid value '%s' provided for folder autoplay option\n", opts[OPT_ARG_PLAYFOLDER]);
                                        }
                                } else {
@@ -9511,7 +9511,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(AST_LOG_WARNING, "Invalid value '%s' provided for record gain option\n", opts[OPT_ARG_RECORDGAIN]);
                                        return -1;
                                } else {
@@ -10340,7 +10340,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");
@@ -10380,7 +10380,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;
@@ -10532,7 +10532,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");
@@ -10543,7 +10543,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");
@@ -10552,7 +10552,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");
@@ -10566,7 +10566,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");
@@ -10583,7 +10583,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");
@@ -10591,7 +10591,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");
@@ -10600,7 +10600,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");
@@ -10609,7 +10609,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);
@@ -10705,7 +10705,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");
@@ -10770,7 +10770,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);
                        }
index f2d21e5168fe9e90c8cb79984e6d05964a60ab76..025acf5926063f8c8a30155c55d2d2f544795b54 100644 (file)
@@ -52,7 +52,7 @@ static int waitforring_exec(struct ast_channel *chan, void *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;
        }
index bb6e06f7ba8d042ddeb26da2c5c4f51019613673..b2f9e563a0e4aa464de191301cd88eae0afe7d0a 100644 (file)
@@ -172,9 +172,9 @@ static int waitfor_exec(struct ast_channel *chan, void *data, int wait_for_silen
                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");
        }
 
index 8b903b0ba4828d7ae77471ef6c4d3b91554344a4..47185db0a413219b976618595400baeb067aea4f 100644 (file)
@@ -59,7 +59,7 @@ static int waituntil_exec(struct ast_channel *chan, void *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;
index 12c150a395c4323493e6090f479912ca8d4e36d8..c58babea366578b3544a1d7fa9e49eba2424b24a 100644 (file)
@@ -419,7 +419,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) ||
@@ -441,7 +441,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);
@@ -457,7 +457,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 ||
@@ -482,7 +482,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);
                                                        break;
                                                }
@@ -495,7 +495,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);
                                                        break;
                                                }
@@ -508,7 +508,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);
                                                        break;
                                                }
@@ -521,7 +521,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);
                                                        break;
                                                }
@@ -534,7 +534,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);
                                                        break;
                                                }
@@ -550,7 +550,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);
                                                        break;
                                                }
@@ -565,7 +565,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);
                                                        break;
                                                }
index 1203e164499d85e11c7d7c3098e5d366794abef3..decccfb58241f114bb5126a6093cab3ed81c0588 100644 (file)
@@ -240,7 +240,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(25);
                                                lensql2 += snprintf(sql2 + lensql2, sizesql2 - lensql2, "%lld", whatever);
                                        } else {
@@ -249,7 +249,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(50);
                                                lensql2 += snprintf(sql2 + lensql2, sizesql2 - lensql2, "%30Lf", whatever);
                                        } else {
@@ -509,7 +509,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);
index 555a32c0dec9ec06d0b16a7ee32d9c51cceb8f65..f3c33b434f576b702895a6715897c87be550813c 100644 (file)
@@ -1354,9 +1354,9 @@ static struct ast_channel *agent_request(const char *type, int format, void *dat
        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 
@@ -2337,9 +2337,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;
index 07c774a28e799d840015fc56d70143e5662ec92c..9d217921887429a18e0bd8bc81d3dc340363baf7 100644 (file)
@@ -8676,7 +8676,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)
@@ -9506,7 +9506,7 @@ static struct ast_channel *dahdi_request(const char *type, int format, void *dat
 
                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;
                }
@@ -9542,7 +9542,7 @@ static struct ast_channel *dahdi_request(const char *type, int format, void *dat
                        channelmatch = x;
                } 
 #ifdef HAVE_PRI
-               else if ((res = sscanf(s, "%d:%d%c%d", &trunkgroup, &crv, &opt, &y)) > 1) {
+               else if ((res = sscanf(s, "%30d:%30d%1c%30d", &trunkgroup, &crv, &opt, &y)) > 1) {
                        if ((trunkgroup < 1) || (crv < 1)) {
                                ast_log(LOG_WARNING, "Unable to determine trunk group and CRV for data %s\n", (char *)data);
                                return NULL;
@@ -9564,8 +9564,8 @@ static struct ast_channel *dahdi_request(const char *type, int format, void *dat
                        channelmatch = crv;
                        p = pris[x].crvs;
                }
-#endif 
-               else if ((res = sscanf(s, "%d%c%d", &x, &opt, &y)) < 1) {
+#endif
+               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 {
@@ -12809,7 +12809,7 @@ static char *dahdi_show_channel(struct ast_cli_entry *e, int cmd, struct ast_cli
                return CLI_SHOWUSAGE;
 #ifdef HAVE_PRI
        if ((c = strchr(a->argv[3], ':'))) {
-               if (sscanf(a->argv[3], "%d:%d", &trunkgroup, &channel) != 2)
+               if (sscanf(a->argv[3], "%30d:%30d", &trunkgroup, &channel) != 2)
                        return CLI_SHOWUSAGE;
                if ((trunkgroup < 1) || (channel < 1))
                        return CLI_SHOWUSAGE;
@@ -14109,7 +14109,7 @@ static int build_channels(struct dahdi_chan_conf *conf, int iscrv, const char *v
 #ifdef HAVE_PRI
        pri = NULL;
        if (iscrv) {
-               if (sscanf(c, "%d:%n", &trunkgroup, &y) != 1) {
+               if (sscanf(c, "%30d:%n", &trunkgroup, &y) != 1) {
                        ast_log(LOG_WARNING, "CRV must begin with trunkgroup followed by a colon at line %d.\n", lineno);
                        return -1;
                }
@@ -14132,9 +14132,9 @@ static int build_channels(struct dahdi_chan_conf *conf, int iscrv, const char *v
 #endif                 
 
        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")) {
@@ -14223,7 +14223,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;
                        }
@@ -14272,7 +14272,7 @@ static int process_dahdi(struct dahdi_chan_conf *confp, const char *cat, struct
                        int res;
                        char policy[21] = "";
 
-                       res = sscanf(v->value, "%d,%20s", &confp->chan.buf_no, policy);
+                       res = sscanf(v->value, "%30d,%20s", &confp->chan.buf_no, policy);
                        if (res != 2) {
                                ast_log(LOG_WARNING, "Parsing buffers option data failed, using defaults.\n");
                                confp->chan.buf_no = numbufs;
@@ -14306,11 +14306,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")) {
@@ -14367,7 +14367,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")) {
@@ -14385,7 +14385,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 {
@@ -14469,19 +14469,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")) {
@@ -14936,7 +14936,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) {
index 44f2553925295e85b93a22fe05821eaef774e53e..727db792b15496d277e67192a633dd581b89c9cc 100644 (file)
@@ -10840,18 +10840,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")) {
@@ -11427,7 +11427,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
index 35ce96858053d18da6d4ee64fbea87f1d2eb4ba3..56836e809716c2a6abf0b30699f16bcc6ba101d8 100644 (file)
@@ -1893,7 +1893,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;
        }
@@ -1908,7 +1908,7 @@ static int process_sdp(struct mgcp_subchannel *sub, struct mgcp_request *req)
        ast_rtp_pt_clear(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);
@@ -1924,7 +1924,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_set_rtpmap_type(sub->rtp, codec, "audio", mimeSubtype, 0);
@@ -2057,7 +2057,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);
@@ -3290,7 +3290,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) {
@@ -3348,7 +3348,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) {
@@ -4169,7 +4169,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);
index f3313ec7151522551471b34b549eb9174cfdd7cf..da0f5116137e46849826717840a5c7abdefac241 100644 (file)
@@ -1220,7 +1220,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;
                }
index ca72923340da757918dae9a4574aad617ff3732b..13886cdcaf60854d65ebcfa11f6af782156d6b70 100644 (file)
@@ -1239,7 +1239,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;
        }
index 1cba39d0b2c2401d3508eb2a61e3a85e7560aefa..6089fae28315dc7a6985f2cee6c0436e873ee88a 100644 (file)
@@ -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);
index 99168840acd8d1ea622f7f66629e9b88eb7c3ad0..2fa124ff2db5a57e93578a1991f715a0387b80e2 100644 (file)
@@ -2423,7 +2423,7 @@ static void *_sip_tcp_helper_thread(struct sip_pvt *pvt, struct ast_tcptls_sessi
                }
                copy_request(&reqcpy, &req);
                parse_request(&reqcpy);
-               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)) {
@@ -3232,7 +3232,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;
                }
        }
@@ -3283,10 +3283,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)) {
                                        p->needdestroy = 1;
                                }
@@ -4563,7 +4563,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, "%5u", &portno) != 1) {
                                portno = (dialog->socket.type & SIP_TRANSPORT_TLS) ?
                                        STANDARD_TLS_PORT : STANDARD_SIP_PORT;
                        }
@@ -6903,7 +6903,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;
                }
@@ -7008,10 +7008,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.
@@ -7171,7 +7171,7 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req, int t38action
                ast_log(LOG_WARNING, "SDP sytax 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 sytax error in o= line version\n");
                return -1;
        }
@@ -7255,8 +7255,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++;
@@ -7266,7 +7266,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;
                                }
@@ -7274,8 +7274,8 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req, int t38action
                                        ast_verbose("Found RTP audio format %d\n", codec);
                                ast_rtp_set_m_type(newaudiortp, 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;
@@ -7285,7 +7285,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;
                                }
@@ -7293,8 +7293,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_set_m_type(newvideortp, 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;
@@ -7304,7 +7304,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;
                                }
@@ -7312,8 +7312,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_set_m_type(newtextrtp, 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;
@@ -7501,21 +7501,21 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req, int t38action
                                ast_rtp_codec_setpref(p->rtp, pref);
                        }
                        continue;
-                       
+
                } else if (!strncmp(a, red_fmtp, strlen(red_fmtp))) {
                        /* count numbers of generations in fmtp */
                        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++ < 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;
 
-               } else if (sscanf(a, "rtpmap: %u %127[^/]/", &codec, mimeSubtype) == 2) {
+               } else if (sscanf(a, "rtpmap: %30u %127[^/]/", &codec, mimeSubtype) == 2) {
                        /* We have a rtpmap to handle */
 
                        if (last_rtpmap_codec < SDP_MAX_RTPMAP_CODECS) {
@@ -7577,10 +7577,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) {
@@ -7603,17 +7603,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;
@@ -7624,7 +7624,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;
@@ -7635,7 +7635,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;
@@ -8383,7 +8383,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;
        }
@@ -8551,7 +8551,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;
        }
@@ -9176,7 +9176,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;
        }
@@ -9221,7 +9221,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;
        }
@@ -10873,7 +10873,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 */
@@ -15803,7 +15803,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;
        }
@@ -16721,7 +16721,7 @@ static int handle_response_register(struct sip_pvt *p, int resp, char *rest, str
                        }
                        tmptmp = strcasestr(contact, "expires=");
                        if (tmptmp) {
-                               if (sscanf(tmptmp + 8, "%d;", &expires) != 1)
+                               if (sscanf(tmptmp + 8, "%30d;", &expires) != 1)
                                        expires = 0;
                        }
                        
@@ -19997,7 +19997,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;
        }
@@ -20027,7 +20027,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;
                }
@@ -20579,7 +20579,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;
                }
@@ -20991,7 +20991,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;
        }
@@ -21021,7 +21021,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;
                }
@@ -22085,7 +22085,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"))
@@ -22276,22 +22276,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;
                        }
@@ -22301,7 +22301,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;
                        }
@@ -22318,7 +22318,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;
                        }
@@ -22332,7 +22332,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);
@@ -22351,12 +22351,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;
                        } 
@@ -22808,17 +22808,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 = 0;
                        }
@@ -22954,7 +22954,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;
                        }
@@ -23014,28 +23014,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);
@@ -23045,13 +23045,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);
@@ -23076,12 +23076,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;
                        } 
@@ -23662,7 +23662,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;
index 67fefbad90d745a14fe75af83649685f624540cd..2c828f85faa39e26dfaab4688e17b407343fe7b5 100644 (file)
@@ -6252,7 +6252,7 @@ static int reload_config(void)
                } else if (!strcasecmp(v->name, "disallow")) {
                        ast_parse_allow_disallow(&default_prefs, &default_capability, v->value, 0);
                } 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);
index 97e5570a05ba1236ed085a4550b1d9a14eb42f6c..312bc997bd639c0a8b3f6cf073a526b2cc02929b 100644 (file)
@@ -358,8 +358,8 @@ END_CONFIG
 #define MAX(a,b) ((a) > (b) ? (a) : (b))
 #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;
@@ -2818,27 +2818,27 @@ 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); 
-       o->rxgain = f;
-       //ast_log(LOG_WARNING, "set rxgain = %f\n", f);
+       if (sscanf(s, "%30f", &f) == 1)
+               o->rxgain = f;
+       ast_debug(4, "set rxgain = %f\n", f);
 }
 /*
 */
 static void store_rxvoiceadj(struct chan_usbradio_pvt *o, char *s)
 {
        float f;
-       sscanf(s,"%f",&f);
-       o->rxvoiceadj = f;
-       //ast_log(LOG_WARNING, "set rxvoiceadj = %f\n", f);
+       if (sscanf(s, "%30f", &f) == 1)
+               o->rxvoiceadj = f;
+       ast_debug(4, "set rxvoiceadj = %f\n", f);
 }
 /*
 */
 static void store_rxctcssadj(struct chan_usbradio_pvt *o, char *s)
 {
        float f;
-       sscanf(s,"%f",&f);
-       o->rxctcssadj = f;
-       //ast_log(LOG_WARNING, "set rxctcssadj = %f\n", f);
+       if (sscanf(s, "%30f", &f) == 1)
+               o->rxctcssadj = f;
+       ast_debug(4, "set rxctcssadj = %f\n", f);
 }
 /*
 */
index e4a7fe2d45b9be218624f6a48683f1a897b333dd..6df917842e6a338b3d816eabf970b80b1f2e0307 100644 (file)
@@ -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;
index 8d1d4f5303c5a801d1c0e398c73b2c67595f3c70..af0eafe71c974d6e8bf4b3e6f9ca300352eee448 100644 (file)
@@ -889,9 +889,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));
@@ -906,7 +906,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);
@@ -975,7 +975,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;
@@ -984,7 +984,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;
index 734491c75d136b7e372b5c8cbff46b47ad4cd71b..8bfd89e1213c34899decadba65eff5c4657061a7 100644 (file)
@@ -396,7 +396,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
@@ -435,7 +435,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
@@ -447,13 +447,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
index ed320368bc8001f7c0a8f949079fd529f478bf67..2c8ba5345d02bc800c5c9306aed4c7fc6de933b2 100644 (file)
@@ -379,6 +379,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
 ------------------
 
index 84d115a73fccc1dccde003f89a94be804f6cb168..84a0d48d8fc281629288e7a4ecec8e3fcd35a25f 100644 (file)
@@ -143,10 +143,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;
index eace3ecd44594afc27ac34881e181d8ebeed41b4..787dfe95f53f7aa62d44cf54cb066d9bd967ce24 100644 (file)
@@ -89,7 +89,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++;
        }
 
@@ -153,15 +153,15 @@ static int cut_internal(struct ast_channel *chan, char *data, char *buffer, size
                                int num1 = 0, num2 = MAXRESULT;
                                char trashchar;
 
-                               if (sscanf(nextgroup, "%d-%d", &num1, &num2) == 2) {
+                               if (sscanf(nextgroup, "%30d-%30d", &num1, &num2) == 2) {
                                        /* range with both start and end */
-                               } else if (sscanf(nextgroup, "-%d", &num2) == 1) {
+                               } else if (sscanf(nextgroup, "-%30d", &num2) == 1) {
                                        /* range with end */
                                        num1 = 0;
-                               } else if ((sscanf(nextgroup, "%d%c", &num1, &trashchar) == 2) && (trashchar == '-')) {
+                               } else if ((sscanf(nextgroup, "%30d%1c", &num1, &trashchar) == 2) && (trashchar == '-')) {
                                        /* range with start */
                                        num2 = MAXRESULT;
-                               } else if (sscanf(nextgroup, "%d", &num1) == 1) {
+                               } else if (sscanf(nextgroup, "%30d", &num1) == 1) {
                                        /* single number */
                                        num2 = num1;
                                } else {
index 6d4c488f6068c9fd9458cde2a04665e0ba504924..766b3c4c41d6c502c502aa5e3651fc03a5dfaae9 100644 (file)
@@ -55,7 +55,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);
index 54893a9bfedd7b888973d6be4e97a8eecdd3bcfd..aacb20579cab7dd5e0f57b6fe2fad5ee3697e3c3 100644 (file)
@@ -262,7 +262,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;
        }
index 3517b16ed186be54f5ef3eaaa2b101f5ba609944..9179ff743b77ce96626baf077ba37c2e22d7ce68 100644 (file)
@@ -190,12 +190,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;
        }
index e093ecffc1181f57d5dd4b383086d072c6158959..129a1b8ef413e6c37b9953992d80d451b61be726 100644 (file)
@@ -711,7 +711,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));
index a3db21d26b0b761d86ae71b33086a7ea9c456f2d..57bd30fe9d8832155724c7e9bbaa62fd84e5af01 100644 (file)
@@ -45,10 +45,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) {
index 4ddfab80b1d134214a5624b29cc7c9db19dd7443..39deabd0ca26b1658a763e37ccda6c2707f21346 100644 (file)
@@ -193,7 +193,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) {
index 1cd55739ebce99ace30ce49a42ba8f1c2cd903bc..1af4ed05fe727778b74db03fcb4a00d35567039f 100644 (file)
@@ -485,7 +485,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;
                                        }
@@ -508,7 +508,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;
                                        }
index c54830358536c2f0fd7760dbd9411609ba3e4f49..d332c9df4ea30276836cf1a3be3d09f8ead9d006 100644 (file)
@@ -101,7 +101,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;
index 0787274aba7ef498e65dd3586897d693e9ed668a..7e9660d9734a82dcc29a45116219492092c320ef 100644 (file)
@@ -291,7 +291,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);
@@ -413,14 +413,14 @@ static const struct dscp_codepoint dscp_pool1[] = {
 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;
+                   *cos = fval;
                    return 0;
                }
        }
-       
+
        return -1;
 }
 
@@ -429,7 +429,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;
        }
index 057370766c762355708598fa752b324ee900b751..92cef6780781da61b4ce2492ec7c932fe3de491f 100644 (file)
@@ -1183,7 +1183,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));
@@ -2052,10 +2052,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;
                                        }
@@ -2096,7 +2096,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]);
@@ -2738,7 +2738,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
@@ -2786,7 +2786,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")) {
@@ -2795,7 +2795,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 */
@@ -2837,7 +2837,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
@@ -2852,7 +2852,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;
                }
@@ -2993,7 +2993,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;
@@ -3033,11 +3033,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':
index 1d9a3017118d8cd8946c4aaa6a6aed01d20782f5..2ec095c0e228047692c64597779ff45f8584c51f 100644 (file)
@@ -1451,7 +1451,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);
@@ -1459,7 +1459,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);
index c7f412bfc94cd0545ceb6233f6dbe2033fbf3b81..ffe7b8c8e79c4d9391ef6999829c6278767b9e4a 100644 (file)
@@ -5372,9 +5372,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 {
index e431cb80a7b72d4c9af0cc44e0e9875b94542b16..298d3b566db07e4ea7c4b51bddad7810c25084e4 100644 (file)
@@ -296,7 +296,7 @@ static char *handle_verbose(struct ast_cli_entry *e, int cmd, struct ast_cli_arg
                atleast = 1;
        if (argc != e->args + atleast && argc != e->args + atleast + 1)
                return CLI_SHOWUSAGE;
-       if (sscanf(argv[e->args + atleast - 1], "%d", &newlevel) != 1)
+       if (sscanf(argv[e->args + atleast - 1], "%30d", &newlevel) != 1)
                return CLI_SHOWUSAGE;
        if (argc == e->args + atleast + 1) {
                unsigned int debug = (*what == 'C');
index a1cc003b601b6e0f6d0e1889c1d0523991797703..9577c1d431ebe845b268ad09def2d1a4c21e75df 100644 (file)
@@ -359,7 +359,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) {
                variable->next = category->root;
index 841020d378f23f763b19784889e613c27cf15150..6ab972957b7d0d48ada70eb68933c8bfafb4d507 100644 (file)
@@ -392,7 +392,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);
index 168c1fd5a93e6e6870a3000143c87cd4da5b01fa..6488618ed6cb0c50728dd3df8f03203de39e6fe2 100644 (file)
@@ -1626,7 +1626,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)
index 339efc31c87e2392584fe372dacf38e9f04214ac..176a2ab083ee8c7383e3179a5fc48ed37e87bf71 100644 (file)
@@ -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;
        }
 
index 191519f73118a5942c03088f89f072240fcbec48..5ed83b68f0ff8b00563c9ab91fa165f1d49c05aa 100644 (file)
@@ -532,7 +532,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);
@@ -3232,7 +3232,7 @@ static int park_call_exec(struct ast_channel *chan, void *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;
                                }
@@ -3244,7 +3244,7 @@ static int park_call_exec(struct ast_channel *chan, void *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;
                                }
@@ -3512,13 +3512,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 {
@@ -3680,13 +3680,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;
@@ -3729,24 +3729,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 
@@ -3754,7 +3754,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;
                        }
@@ -4361,7 +4361,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);
index 83e8a0e9114fa8df1256525c865d68119141d54b..e294026acdcd82cbe2894c4873d82980ca6a337b 100644 (file)
@@ -731,7 +731,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++)
index c520560acdd13d28ab8a54587960ec66f335d2cc..ce3ef08eb9362ab0b10cab2ff0f30868d779461e 100644 (file)
@@ -137,10 +137,10 @@ static uint32_t manid_from_vars(struct ast_variable *sid) {
 
        while (sid && strcmp(sid->name, "mansession_id"))
                sid = sid->next;
-       
-       if (!sid || sscanf(sid->value, "%x", &mngid) != 1)
+
+       if (!sid || sscanf(sid->value, "%30x", &mngid) != 1)
                return 0;
-       
+
        return mngid;
 }
 
index 1769dce6dd9c4791dcd6b2d43ab233c2309dba8c..0dbbe8afe56bba65890df723f249f49f356b3704 100644 (file)
@@ -239,46 +239,46 @@ int ast_playtones_start(struct ast_channel *chan, int vol, const char *playlst,
                        s++;
                else if (d.reppos == -1)
                        d.reppos = d.nitems;
-               if (sscanf(s, "%d+%d/%d", &freq1, &freq2, &duration) == 3) {
+               if (sscanf(s, "%30d+%30d/%30d", &freq1, &freq2, &duration) == 3) {
                        /* f1+f2/time format */
-               } else if (sscanf(s, "%d+%d", &freq1, &freq2) == 2) {
+               } else if (sscanf(s, "%30d+%30d", &freq1, &freq2) == 2) {
                        /* f1+f2 format */
                        duration = 0;
-               } else if (sscanf(s, "%d*%d/%d", &freq1, &freq2, &duration) == 3) {
+               } else if (sscanf(s, "%30d*%30d/%30d", &freq1, &freq2, &duration) == 3) {
                        /* f1*f2/time format */
                        modulate = 1;
-               } else if (sscanf(s, "%d*%d", &freq1, &freq2) == 2) {
+               } else if (sscanf(s, "%30d*%30d", &freq1, &freq2) == 2) {
                        /* f1*f2 format */
                        duration = 0;
                        modulate = 1;
-               } else if (sscanf(s, "%d/%d", &freq1, &duration) == 2) {
+               } else if (sscanf(s, "%30d/%30d", &freq1, &duration) == 2) {
                        /* f1/time format */
                        freq2 = 0;
-               } else if (sscanf(s, "%d", &freq1) == 1) {
+               } else if (sscanf(s, "%30d", &freq1) == 1) {
                        /* f1 format */
                        freq2 = 0;
                        duration = 0;
-               } else if (sscanf(s, "M%d+M%d/%d", &freq1, &freq2, &duration) == 3) {
+               } else if (sscanf(s, "M%30d+M%30d/%30d", &freq1, &freq2, &duration) == 3) {
                        /* Mf1+Mf2/time format */
                        midinote = 1;
-               } else if (sscanf(s, "M%d+M%d", &freq1, &freq2) == 2) {
+               } else if (sscanf(s, "M%30d+M%30d", &freq1, &freq2) == 2) {
                        /* Mf1+Mf2 format */
                        duration = 0;
                        midinote = 1;
-               } else if (sscanf(s, "M%d*M%d/%d", &freq1, &freq2, &duration) == 3) {
+               } else if (sscanf(s, "M%30d*M%30d/%30d", &freq1, &freq2, &duration) == 3) {
                        /* Mf1*Mf2/time format */
                        modulate = 1;
                        midinote = 1;
-               } else if (sscanf(s, "M%d*M%d", &freq1, &freq2) == 2) {
+               } else if (sscanf(s, "M%30d*M%30d", &freq1, &freq2) == 2) {
                        /* Mf1*Mf2 format */
                        duration = 0;
                        modulate = 1;
                        midinote = 1;
-               } else if (sscanf(s, "M%d/%d", &freq1, &duration) == 2) {
+               } else if (sscanf(s, "M%30d/%30d", &freq1, &duration) == 2) {
                        /* Mf1/time format */
                        freq2 = -1;
                        midinote = 1;
-               } else if (sscanf(s, "M%d", &freq1) == 1) {
+               } else if (sscanf(s, "M%30d", &freq1) == 1) {
                        /* Mf1 format */
                        freq2 = -1;
                        duration = 0;
index b2798133402a105f79c38be9cb32ac407d3c99f7..cfc50e45b60dcadc2b9a00b2035d034d9ee76a20 100644 (file)
@@ -1585,7 +1585,7 @@ static int action_waitevent(struct mansession *s, const struct message *m)
                idText[0] = '\0';
 
        if (!ast_strlen_zero(timeouts)) {
-               sscanf(timeouts, "%i", &timeout);
+               sscanf(timeouts, "%30i", &timeout);
                if (timeout < -1)
                        timeout = -1;
                /* XXX maybe put an upper bound, or prevent the use of 0 ? */
@@ -2071,7 +2071,7 @@ static int action_redirect(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;
@@ -2392,13 +2392,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;
        }
@@ -3780,7 +3780,7 @@ static struct ast_str *generic_http_callback(enum output_format format,
 
        for (v = params; v; v = v->next) {
                if (!strcasecmp(v->name, "mansession_id")) {
-                       sscanf(v->value, "%x", &ident);
+                       sscanf(v->value, "%30x", &ident);
                        break;
                }
        }
index 2bdf9ccd6d48b5a1bff8b2d0c99af29becc2b42d..24c6f12b52603c4335d847e83cdb21d97a138420 100644 (file)
@@ -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;
        
index 146997a184689c493c84d44e5cc951d43898f449..7994c528ee69e9cb1a36a7230240be1ee52a8ec7 100644 (file)
@@ -2388,7 +2388,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 */
                }
        }
@@ -6220,7 +6220,7 @@ static int lookup_name(const char *s, char *const names[], int max)
                        if (!strcasecmp(s, names[i]))
                                return i+1;
                }
-       } else if (sscanf(s, "%d", &i) == 1 && i >= 1 && i <= max) {
+       } else if (sscanf(s, "%2d", &i) == 1 && i >= 1 && i <= max) {
                return i;
        }
        return 0; /* error return */
@@ -6307,11 +6307,11 @@ static void get_timerange(struct ast_timing *i, char *times)
                ast_log(LOG_WARNING, "Invalid time range.  Assuming no restrictions based on time.\n");
                return;
        }
-       if (sscanf(times, "%d:%d", &s1, &s2) != 2) {
+       if (sscanf(times, "%2d:%2d", &s1, &s2) != 2) {
                ast_log(LOG_WARNING, "%s isn't a time.  Assuming no restrictions based on time.\n", times);
                return;
        }
-       if (sscanf(e, "%d:%d", &e1, &e2) != 2) {
+       if (sscanf(e, "%2d:%2d", &e1, &e2) != 2) {
                ast_log(LOG_WARNING, "%s isn't a time.  Assuming no restrictions based on time.\n", e);
                return;
        }
@@ -7850,7 +7850,7 @@ static void wait_for_hangup(struct ast_channel *chan, 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;
@@ -8578,7 +8578,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;
@@ -8992,7 +8992,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);
index d0e6a6d24d7d8b3e4d2042a3b14df95bcaccc1c0..ac23d42faf670e4a308357a43e4ba2938adf9450 100644 (file)
@@ -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);      
index c0418dafccb9fbf493b8000f4bbb04ba17fd645e..90742a8a033bd551262671e5c2b82c53424edf81 100644 (file)
@@ -1714,7 +1714,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)
@@ -1741,7 +1741,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;
index 15dae84d641771d2715d779c718a953877bc0827..3a83961100bf5114bdd4b186b18ba488a753cf69 100644 (file)
@@ -70,7 +70,7 @@ int dundi_str_short_to_eid(dundi_eid *eid, const char *s)
        int x;
        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;
+                       return -1;
        for (x = 0; x < 6; x++)
                eid->eid[x] = eid_int[x];
        return 0;
index e3382a2f13a7ca34b390e74ff7d36f1ba0693b42..4ff5d1fe37e176ca03400cf0da036ccf28a9202e 100644 (file)
@@ -947,7 +947,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;
                        }
@@ -1438,7 +1438,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;
@@ -1566,9 +1566,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 {
index 4d17376738452f91b62ed06fefe541a987f9dcd1..cab456172cc8da92ad1558d0aa6e9de8dbbba6fc 100644 (file)
@@ -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) {
@@ -4088,7 +4088,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;
@@ -4252,7 +4252,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;
@@ -4354,7 +4354,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;
@@ -4451,7 +4451,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;
@@ -4690,14 +4690,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
@@ -4732,7 +4732,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",
index e9001deef3f31cb2f3e16274d6209d7395336daf..f51ec8204d719b711b1dbcaa0af97e4fb5ac75d2 100644 (file)
@@ -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)
index 64c176769895b350d16375cff314d9f33b35957a..34010e7528601dd21157a32c3c5e7c96a2b53989 100644 (file)
@@ -171,7 +171,7 @@ static int apply_outgoing(struct outgoing *o, char *fn, FILE *f)
                                } else if (!strcasecmp(buf, "data")) {
                                        ast_copy_string(o->data, c, sizeof(o->data));
                                } 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;
                                        }
@@ -182,24 +182,24 @@ static int apply_outgoing(struct outgoing *o, char *fn, FILE *f)
                                } else if (!strcasecmp(buf, "extension")) {
                                        ast_copy_string(o->exten, c, sizeof(o->exten));
                                } 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;
                                        }
index 20e5eddc30c7b8bfd99c1b9204709322176c8e37..dc1678616cf71e613c84a0b5b8ba82ae00ac56c3 100644 (file)
@@ -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++;
index d04e38a2525d09a0ad506a11827522cd691b5a0d..be2794a636169f3daad74b00797e4b62b2ed9b31 100644 (file)
@@ -786,7 +786,7 @@ static int handle_waitfordigit(struct ast_channel *chan, AGI *agi, int argc, cha
 
        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);
@@ -905,7 +905,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;
        }
 
@@ -941,7 +941,7 @@ static int handle_streamfile(struct ast_channel *chan, AGI *agi, int argc, char
        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))) {
@@ -1053,7 +1053,7 @@ static int handle_saynumber(struct ast_channel *chan, AGI *agi, int argc, char *
 
        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)
@@ -1068,7 +1068,7 @@ static int handle_saydigits(struct ast_channel *chan, AGI *agi, int argc, char *
 
        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);
@@ -1098,7 +1098,7 @@ static int handle_saydate(struct ast_channel *chan, AGI *agi, int argc, char *ar
 
        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)
@@ -1113,7 +1113,7 @@ static int handle_saytime(struct ast_channel *chan, AGI *agi, int argc, char *ar
 
        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)
@@ -1223,7 +1223,7 @@ static int handle_setpriority(struct ast_channel *chan, AGI *agi, int argc, char
        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;
        }
@@ -1254,7 +1254,7 @@ static int handle_recordfile(struct ast_channel *chan, AGI *agi, int argc, char
 
        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)
@@ -1295,7 +1295,7 @@ static int handle_recordfile(struct ast_channel *chan, AGI *agi, int argc, char
        /* 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], '=')))
@@ -1417,7 +1417,7 @@ static int handle_autohangup(struct ast_channel *chan, AGI *agi, int argc, char
 
        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;
@@ -1605,7 +1605,7 @@ static int handle_verbose(struct ast_channel *chan, AGI *agi, int argc, char **a
                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]);
 
index 37079adeaf989f3dc4a42354a3589b999ed92c52..c2d26f0cd7cff0f8dfc4e9ff2e9d51edb6f4d9a5 100644 (file)
@@ -264,7 +264,7 @@ static int update_curl(const char *url, const char *unused, const char *keyfield
        stringp = buffer;
        while (*stringp <= ' ')
                stringp++;
-       sscanf(stringp, "%d", &rowcount);
+       sscanf(stringp, "%30d", &rowcount);
 
        ast_free(buffer);
        ast_free(query);
@@ -327,7 +327,7 @@ static int store_curl(const char *url, const char *unused, va_list ap)
        stringp = buffer;
        while (*stringp <= ' ')
                stringp++;
-       sscanf(stringp, "%d", &rowcount);
+       sscanf(stringp, "%30d", &rowcount);
 
        ast_free(buffer);
        ast_free(query);
@@ -395,7 +395,7 @@ static int destroy_curl(const char *url, const char *unused, const char *keyfiel
        stringp = buffer;
        while (*stringp <= ' ')
                stringp++;
-       sscanf(stringp, "%d", &rowcount);
+       sscanf(stringp, "%30d", &rowcount);
 
        ast_free(buffer);
        ast_free(query);
index 441ae365423046178cd150df67f5d78f66b89367..84500f0ce8c64bc50f1e6a9de1c4a8fd1ccfbed9 100644 (file)
@@ -1408,7 +1408,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;
                }
@@ -1429,7 +1429,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;
        }
index ab955e3316c6ba70acce52d9a4a9132768bcf7e7..faef10a12954a81d16b6a8c08adf81a1a96a243b 100644 (file)
@@ -162,10 +162,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;
index a7bf62cef282ea3192de7555d796f44fce6662f1..df87400f46a10a0a8e23597e16ed6670849396b2 100644 (file)
@@ -798,7 +798,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,", col->name);
                                ast_str_append(&sql2, 0, "%d,", scannum);
                        }
index 5fbf46a242dce13338aec1fba1bfa9dac4eb50e4..3425aaee25cf4ae0c286cbe4a8690f33207affb6 100644 (file)
@@ -176,7 +176,7 @@ static struct ast_str *http_post_callback(struct ast_tcptls_session_instance *se
                        continue;
                }
 
-               if (sscanf(var->value, "%lx", &ident) != 1) {
+               if (sscanf(var->value, "%30lx", &ident) != 1) {
                        return ast_http_error((*status = 400),
                                              (*title = ast_strdup("Bad Request")),
                                              NULL, "The was an error parsing the request.");
@@ -206,7 +206,7 @@ static struct ast_str *http_post_callback(struct ast_tcptls_session_instance *se
                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);
 
index b1cf025b0c77e80dce4b095e2b8cad76a851859e..94a6e8719eedb22af3dfc7fafa48e3c183e9d046 100644 (file)
@@ -178,7 +178,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;
index bdfdda8b0fffc3ed2d9c08cfc78fbe0a5ccdebbd..9370db4b90563aeeb9602d926f5c443010a7fb70 100644 (file)
@@ -621,7 +621,7 @@ static int play_moh_exec(struct ast_channel *chan, void *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);
index b928ec8a8bae9fb1d1116e0016bbac03b44eedb9..546fe974bf31e14512c8b48aa1393244785625cd 100644 (file)
@@ -446,7 +446,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;
@@ -456,7 +456,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")) {
index 07303eeeff25234feee9ca93f03d12742ed9895f..3d94fe02804492f3ed405f6c460e207b0d0abc42 100644 (file)
@@ -906,7 +906,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) {
@@ -914,7 +914,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;
                        }
@@ -1047,7 +1047,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;
                        }
@@ -1168,7 +1168,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;
                }
index 82be552ed12bac66e30677559e3000e599ffd9a9..89ea8fbe5e128ae80d30e39caac69be288047add 100644 (file)
@@ -745,7 +745,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;
index 7f2d68196b819e900155dd13c35a34c88bde2790..f7e9a43699c70808bbb21cc1faa2ba96af568f6c 100644 (file)
@@ -3146,7 +3146,7 @@ static int lookup_name(const char *s, char *const names[], int max)
                        if (!strcasecmp(s, names[i]))
                                return i+1;
                }
-       } else if (sscanf(s, "%d", &i) == 1 && i >= 1 && i <= max) {
+       } else if (sscanf(s, "%30d", &i) == 1 && i >= 1 && i <= max) {
                return i;
        }
        return 0; /* error return */
@@ -3233,11 +3233,11 @@ static void get_timerange(struct ast_timing *i, char *times)
                ast_log(LOG_WARNING, "Invalid time range.  Assuming no restrictions based on time.\n");
                return;
        }
-       if (sscanf(times, "%d:%d", &s1, &s2) != 2) {
+       if (sscanf(times, "%2d:%2d", &s1, &s2) != 2) {
                ast_log(LOG_WARNING, "%s isn't a time.  Assuming no restrictions based on time.\n", times);
                return;
        }
-       if (sscanf(e, "%d:%d", &e1, &e2) != 2) {
+       if (sscanf(e, "%2d:%2d", &e1, &e2) != 2) {
                ast_log(LOG_WARNING, "%s isn't a time.  Assuming no restrictions based on time.\n", e);
                return;
        }
@@ -5547,7 +5547,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 */
                }
        }
@@ -5951,7 +5951,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;
index 2900cb06562391aa50eaa5e9374122a14170d7b9..62dc5f9f0cb6ef3d14203fbdec27d111c6d72bb7 100644 (file)
@@ -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:
index 4e90da789dcd7dd77c9fe2a18b307bb68aeeb52c..d3d06738b9ef3e67be6b30654c7052c64ccb9469 100644 (file)
@@ -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;
                }