Fixes for GCC 9
authorGeorge Joseph <gjoseph@digium.com>
Fri, 10 May 2019 15:48:28 +0000 (09:48 -0600)
committerGeorge Joseph <gjoseph@digium.com>
Fri, 10 May 2019 16:22:55 +0000 (10:22 -0600)
Various fixes for issues caught by gcc 9.  Mostly snprintf
trying to copy to a buffer potentially too small.

ASTERISK-28412

Change-Id: I9e85a60f3c81d46df16cfdd1c329ce63432cf32e

apps/app_adsiprog.c
apps/app_followme.c
channels/chan_console.c
channels/chan_iax2.c
main/media_cache.c
pbx/pbx_dundi.c
utils/extconf.c
utils/smsq.c

index cdc57aa..26fe16b 100644 (file)
@@ -588,7 +588,7 @@ static struct adsi_subscript *getsubbyname(struct adsi_script *state, char *name
        }
 
        if (state->numsubs > 127) {
-               ast_log(LOG_WARNING, "No more subscript space at line %d of %s\n", lineno, script);
+               ast_log(LOG_WARNING, "No more subscript space at line %d of %s\n", lineno, S_OR(script, "unknown"));
                return NULL;
        }
 
index 9aef039..c5b70ec 100644 (file)
@@ -224,7 +224,7 @@ struct findme_user {
        long digts;
        int ynidx;
        int state;
-       char dialarg[256];
+       char dialarg[768];
        /*! Collected digits to accept/decline the call. */
        char yn[MAX_YN_STRING];
        /*! TRUE if the outgoing call is answered. */
index 9113ffa..a5ee2db 100644 (file)
@@ -849,10 +849,10 @@ static char *cli_console_dial(struct ast_cli_entry *e, int cmd, struct ast_cli_a
        if (a->argc == e->args + 1) {
                char *ext = NULL, *con = NULL;
                s = ast_ext_ctx(pvt, a->argv[e->args], &ext, &con);
-               ast_debug(1, "provided '%s', exten '%s' context '%s'\n",
-                       a->argv[e->args], mye, myc);
                mye = ext;
                myc = con;
+               ast_debug(1, "provided '%s', exten '%s' context '%s'\n",
+                       a->argv[e->args], mye, myc);
        }
 
        /* supply default values if needed */
index e41d991..a7b2f26 100644 (file)
@@ -3814,7 +3814,7 @@ static int peer_status(struct iax2_peer *peer, char *status, int statuslen)
 /*! \brief Show one peer in detail */
 static char *handle_cli_iax2_show_peer(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
-       char status[30];
+       char status[64];
        char cbuf[256];
        struct iax2_peer *peer;
        struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
@@ -6836,7 +6836,7 @@ struct show_peers_context {
 static void _iax2_show_peers_one(int fd, struct mansession *s, struct show_peers_context *cont, struct iax2_peer *peer)
 {
        char name[256] = "";
-       char status[20];
+       char status[64];
        int retstatus;
        struct ast_str *encmethods = ast_str_alloca(256);
 
index 97a80d5..4493235 100644 (file)
@@ -160,8 +160,8 @@ static void bucket_file_update_path(struct ast_bucket_file *bucket_file,
                        sizeof(bucket_file->path));
        } else if (!strchr(bucket_file->path, '.') && (ext = strrchr(ast_sorcery_object_get_id(bucket_file), '.'))) {
                /* If we don't have a file extension and were provided one in the URI, use it */
-               char new_path[PATH_MAX];
-               char found_ext[PATH_MAX];
+               char found_ext[32];
+               char new_path[PATH_MAX + sizeof(found_ext)];
 
                ast_bucket_file_metadata_set(bucket_file, "ext", ext);
 
index fa90cb8..ec150f3 100644 (file)
@@ -2123,7 +2123,7 @@ static void build_secret(char *secret, int seclen)
 
 static void save_secret(const char *newkey, const char *oldkey)
 {
-       char tmp[256];
+       char tmp[350];
        if (oldkey)
                snprintf(tmp, sizeof(tmp), "%s;%s", oldkey, newkey);
        else
@@ -2722,7 +2722,7 @@ static char *dundi_show_peers(struct ast_cli_entry *e, int cmd, struct ast_cli_a
        AST_LIST_LOCK(&peers);
        ast_cli(a->fd, FORMAT2, "EID", "Host", "Port", "Model", "AvgTime", "Status");
        AST_LIST_TRAVERSE(&peers, peer, list) {
-               char status[20];
+               char status[64];
                int print_line = -1;
                char srch[2000];
 
index 129dcc8..9ffa3f6 100644 (file)
@@ -3005,7 +3005,7 @@ static int process_text_line(struct ast_config *cfg, struct ast_category **cat,
                if (do_include || do_exec) {
                        if (c) {
                                char *cur2;
-                               char real_inclusion_name[256];
+                               char real_inclusion_name[525];
 
                                /* Strip off leading and trailing "'s and <>'s */
                                while((*c == '<') || (*c == '>') || (*c == '\"')) c++;
index 4934ef7..8fd36ad 100644 (file)
@@ -98,7 +98,7 @@ static int utf8decode (unsigned char **pp)
 */
 static char txqcheck (char *dir, char *queue, char subaddress, char *channel, char *callerid, int wait, int delay, int retries, int concurrent)
 {
-   char ogname[100],
+   char ogname[300],
      temp[100],
      dirname[100],
     *p=NULL;