[Asterisk-code-review] Fix compiler warnings on Fedora 26 / GCC 7. (asterisk[13])

Jenkins2 asteriskteam at digium.com
Tue Aug 1 12:28:54 CDT 2017


Jenkins2 has submitted this change and it was merged. ( https://gerrit.asterisk.org/6113 )

Change subject: Fix compiler warnings on Fedora 26 / GCC 7.
......................................................................

Fix compiler warnings on Fedora 26 / GCC 7.

GCC 7 has added capability to produce warnings, this fixes most of those
warnings.  The specific warnings are disabled in a few places:

* app_voicemail.c: truncation of paths more than 4096 chars in many places.
* chan_mgcp.c: callid truncated to 80 chars.
* cdr.c: two userfields are combined to cdr copy, fix would break ABI.
* tcptls.c: ignore use of deprecated method SSLv3_client_method().

ASTERISK-27156 #close

Change-Id: I65f280e7d3cfad279d16f41823a4d6fddcbc4c88
---
M addons/chan_ooh323.c
M apps/Makefile
M apps/app_chanspy.c
M apps/app_followme.c
M apps/app_minivm.c
M apps/app_queue.c
M apps/app_voicemail.c
M channels/Makefile
M channels/chan_iax2.c
M channels/chan_motif.c
M channels/chan_sip.c
M channels/chan_unistim.c
M channels/iax2/firmware.c
M main/Makefile
M main/ast_expr2.c
M main/ast_expr2.y
M main/asterisk.c
M main/ccss.c
M main/cli.c
M main/libasteriskssl.c
M main/manager.c
M main/stdtime/localtime.c
M main/utils.c
M res/res_calendar.c
M res/res_config_pgsql.c
M res/res_monitor.c
M utils/astman.c
M utils/extconf.c
28 files changed, 94 insertions(+), 82 deletions(-)

Approvals:
  George Joseph: Looks good to me, but someone else must approve
  Kevin Harwell: Looks good to me, approved
  Jenkins2: Approved for Submit



diff --git a/addons/chan_ooh323.c b/addons/chan_ooh323.c
index b64d43c..44f339f 100644
--- a/addons/chan_ooh323.c
+++ b/addons/chan_ooh323.c
@@ -3181,7 +3181,7 @@
 
 static char *handle_cli_ooh323_show_peer(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
-	char ip_port[30];
+	char ip_port[64];
 	struct ooh323_peer *prev = NULL, *peer = NULL;
 	
 	switch (cmd) {
@@ -3212,7 +3212,7 @@
 	}
 
 	if (peer) {
-		sprintf(ip_port, "%s:%d", peer->ip, peer->port);
+		sprintf(ip_port, "%s:%hu", peer->ip, peer->port);
 		ast_cli(a->fd, "%-15.15s%s\n", "Name: ", peer->name);
 		ast_cli(a->fd, "%s:%s,%s\n", "FastStart/H.245 Tunneling", peer->faststart?"yes":"no",
 					peer->h245tunneling?"yes":"no");
@@ -3280,7 +3280,7 @@
 {
 	struct ooh323_peer *prev = NULL, *peer = NULL;
 	struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
-   char ip_port[30];
+   char ip_port[64];
 #define FORMAT  "%-15.15s  %-15.15s  %-23.23s  %-s\n"
 
 	switch (cmd) {
@@ -3303,7 +3303,7 @@
 	peer = peerl.peers;
 	while (peer) {
 		ast_mutex_lock(&peer->lock);
-		snprintf(ip_port, sizeof(ip_port), "%s:%d", peer->ip, peer->port);
+		snprintf(ip_port, sizeof(ip_port), "%s:%hu", peer->ip, peer->port);
 		ast_cli(a->fd, FORMAT, peer->name, 
 					peer->accountcode,
 					ip_port,
diff --git a/apps/Makefile b/apps/Makefile
index 86e5caf..efc8329 100644
--- a/apps/Makefile
+++ b/apps/Makefile
@@ -30,6 +30,8 @@
 clean::
 	rm -f confbridge/*.o confbridge/*.i confbridge/*.gcda confbridge/*.gcno
 
+app_voicemail.o: _ASTCFLAGS+=-Wno-format-truncation
+
 app_confbridge.so: $(subst .c,.o,$(wildcard confbridge/*.c))
 $(subst .c,.o,$(wildcard confbridge/*.c)): _ASTCFLAGS+=$(call MOD_ASTCFLAGS,app_confbridge)
 
diff --git a/apps/app_chanspy.c b/apps/app_chanspy.c
index 2a472bf..aefe940 100644
--- a/apps/app_chanspy.c
+++ b/apps/app_chanspy.c
@@ -1425,7 +1425,7 @@
 static int dahdiscan_exec(struct ast_channel *chan, const char *data)
 {
 	const char *spec = "DAHDI";
-	struct ast_flags flags;
+	struct ast_flags flags = {0};
 	struct spy_dtmf_options user_options = {
 		.cycle = '#',
 		.volume = '\0',
diff --git a/apps/app_followme.c b/apps/app_followme.c
index 602806b..5f9e220 100644
--- a/apps/app_followme.c
+++ b/apps/app_followme.c
@@ -1527,7 +1527,7 @@
 	}
 	if (!ast_strlen_zero(targs->namerecloc)) {
 		int ret;
-		char fn[PATH_MAX];
+		char fn[PATH_MAX + sizeof(REC_FORMAT)];
 
 		snprintf(fn, sizeof(fn), "%s.%s", targs->namerecloc,
 			     REC_FORMAT);
diff --git a/apps/app_minivm.c b/apps/app_minivm.c
index 1bfcfbb..43cd7a2 100644
--- a/apps/app_minivm.c
+++ b/apps/app_minivm.c
@@ -2253,7 +2253,7 @@
 	char ecodes[16] = "#";
 	char *tmpptr;
 	struct minivm_account *vmu;
-	char *username = argv[0];
+	char *username;
 
 	if (ast_strlen_zero(data))  {
 		ast_log(LOG_ERROR, "Minivm needs at least an account argument \n");
diff --git a/apps/app_queue.c b/apps/app_queue.c
index ac4738f..0d9b2f1 100644
--- a/apps/app_queue.c
+++ b/apps/app_queue.c
@@ -6481,7 +6481,6 @@
 	char oldexten[AST_MAX_EXTENSION]="";
 	char oldcontext[AST_MAX_CONTEXT]="";
 	char queuename[256]="";
-	char interfacevar[256]="";
 	struct ast_channel *peer;
 	struct ast_channel *which;
 	struct callattempt *lpeer;
@@ -6682,6 +6681,7 @@
 		}
 	} else { /* peer is valid */
 		RAII_VAR(struct ast_json *, blob, NULL, ast_json_unref);
+		RAII_VAR(struct ast_str *, interfacevar, ast_str_create(325), ast_free);
 		/* Ah ha!  Someone answered within the desired timeframe.  Of course after this
 		   we will always return with -1 so that it is hung up properly after the
 		   conversation.  */
@@ -6795,20 +6795,20 @@
 		ao2_lock(qe->parent);
 		/* if setinterfacevar is defined, make member variables available to the channel */
 		/* use  pbx_builtin_setvar to set a load of variables with one call */
-		if (qe->parent->setinterfacevar) {
-			snprintf(interfacevar, sizeof(interfacevar), "MEMBERINTERFACE=%s,MEMBERNAME=%s,MEMBERCALLS=%d,MEMBERLASTCALL=%ld,MEMBERPENALTY=%d,MEMBERDYNAMIC=%d,MEMBERREALTIME=%d",
+		if (qe->parent->setinterfacevar && interfacevar) {
+			ast_str_set(&interfacevar, 0, "MEMBERINTERFACE=%s,MEMBERNAME=%s,MEMBERCALLS=%d,MEMBERLASTCALL=%ld,MEMBERPENALTY=%d,MEMBERDYNAMIC=%d,MEMBERREALTIME=%d",
 				member->interface, member->membername, member->calls, (long)member->lastcall, member->penalty, member->dynamic, member->realtime);
-		 	pbx_builtin_setvar_multiple(qe->chan, interfacevar);
-			pbx_builtin_setvar_multiple(peer, interfacevar);
+			pbx_builtin_setvar_multiple(qe->chan, ast_str_buffer(interfacevar));
+			pbx_builtin_setvar_multiple(peer, ast_str_buffer(interfacevar));
 		}
 
 		/* if setqueueentryvar is defined, make queue entry (i.e. the caller) variables available to the channel */
 		/* use  pbx_builtin_setvar to set a load of variables with one call */
-		if (qe->parent->setqueueentryvar) {
-			snprintf(interfacevar, sizeof(interfacevar), "QEHOLDTIME=%ld,QEORIGINALPOS=%d",
+		if (qe->parent->setqueueentryvar && interfacevar) {
+			ast_str_set(&interfacevar, 0, "QEHOLDTIME=%ld,QEORIGINALPOS=%d",
 				(long) (time(NULL) - qe->start), qe->opos);
-			pbx_builtin_setvar_multiple(qe->chan, interfacevar);
-			pbx_builtin_setvar_multiple(peer, interfacevar);
+			pbx_builtin_setvar_multiple(qe->chan, ast_str_buffer(interfacevar));
+			pbx_builtin_setvar_multiple(peer, ast_str_buffer(interfacevar));
 		}
 
 		ao2_unlock(qe->parent);
diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c
index 3836fa9..943a883 100644
--- a/apps/app_voicemail.c
+++ b/apps/app_voicemail.c
@@ -7915,7 +7915,7 @@
 
 				*duration += prepend_duration;
 				msg_cat = ast_category_get(msg_cfg, "message", NULL);
-				snprintf(duration_buf, 11, "%ld", *duration);
+				snprintf(duration_buf, sizeof(duration_buf), "%ld", *duration);
 				if (!ast_variable_update(msg_cat, "duration", duration_buf, NULL, 0)) {
 					ast_config_text_file_save(textfile, msg_cfg, "app_voicemail");
 				}
@@ -8685,7 +8685,7 @@
 static int play_message(struct ast_channel *chan, struct ast_vm_user *vmu, struct vm_state *vms)
 {
 	int res = 0;
-	char filename[256], *cid;
+	char filename[PATH_MAX], *cid;
 	const char *origtime, *context, *category, *duration, *flag;
 	struct ast_config *msg_cfg;
 	struct ast_flags config_flags = { CONFIG_FLAG_NOCACHE };
diff --git a/channels/Makefile b/channels/Makefile
index cacfde1..3754007 100644
--- a/channels/Makefile
+++ b/channels/Makefile
@@ -49,6 +49,8 @@
 chan_dahdi.so: $(CHAN_DAHDI_OBJS)
 $(CHAN_DAHDI_OBJS): _ASTCFLAGS+=$(call MOD_ASTCFLAGS,chan_dahdi)
 
+chan_mgcp.o: _ASTCFLAGS+=-Wno-format-truncation
+
 chan_misdn.o: _ASTCFLAGS+=-Imisdn
 
 misdn_config.o: _ASTCFLAGS+=-Imisdn
diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c
index 98d60ef..f422aae 100644
--- a/channels/chan_iax2.c
+++ b/channels/chan_iax2.c
@@ -8571,7 +8571,7 @@
 {
 	int newcall = 0;
 	struct iax_ie_data ied;
-	struct ast_sockaddr new;
+	struct ast_sockaddr new = { {0,} };
 
 	memset(&ied, 0, sizeof(ied));
 	if (!ast_sockaddr_isnull(&ies->apparent_addr)) {
diff --git a/channels/chan_motif.c b/channels/chan_motif.c
index 4bb84c9..3141037 100644
--- a/channels/chan_motif.c
+++ b/channels/chan_motif.c
@@ -1907,7 +1907,7 @@
 {
 	RAII_VAR(struct jingle_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
 	RAII_VAR(struct jingle_endpoint *, endpoint, NULL, ao2_cleanup);
-	char *dialed, target[200] = "";
+	char *dialed, target[1024] = "";
 	struct ast_xmpp_buddy *buddy;
 	struct jingle_session *session;
 	struct ast_channel *chan;
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 488fbf4..b19c669 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -2080,7 +2080,7 @@
 static int construct_pidf_body(enum sip_cc_publish_state state, char *pidf_body, size_t size, const char *presentity)
 {
 	struct ast_str *body = ast_str_alloca(size);
-	char tuple_id[32];
+	char tuple_id[64];
 
 	generate_random_string(tuple_id, sizeof(tuple_id));
 
@@ -15319,7 +15319,7 @@
 {
 	struct sip_request req;
 	struct sip_cc_agent_pvt *agent_pvt = agent->private_data;
-	char uri[SIPBUFSIZE];
+	char uri[SIPBUFSIZE + sizeof("cc-URI: \r\n") - 1];
 	char state_str[64];
 	char subscription_state_hdr[64];
 
@@ -15336,7 +15336,7 @@
 	add_header(&req, "Subscription-State", subscription_state_hdr);
 	if (state == CC_READY) {
 		generate_uri(subscription, agent_pvt->notify_uri, sizeof(agent_pvt->notify_uri));
-		snprintf(uri, sizeof(uri) - 1, "cc-URI: %s\r\n", agent_pvt->notify_uri);
+		snprintf(uri, sizeof(uri), "cc-URI: %s\r\n", agent_pvt->notify_uri);
 	}
 	add_content(&req, state_str);
 	if (state == CC_READY) {
diff --git a/channels/chan_unistim.c b/channels/chan_unistim.c
index 029ce91..c3baa8a 100644
--- a/channels/chan_unistim.c
+++ b/channels/chan_unistim.c
@@ -372,7 +372,7 @@
 struct unistim_line {
 	ast_mutex_t lock;
 	char name[80]; /*! Like 200 */
-	char fullname[80]; /*! Like USTM/200\@black */
+	char fullname[101]; /*! Like USTM/200\@black */
 	char exten[AST_MAX_EXTENSION]; /*! Extension where to start */
 	char cid_num[AST_MAX_EXTENSION]; /*! CallerID Number */
 	char mailbox[AST_MAX_EXTENSION]; /*! Mailbox for MWI */
@@ -3699,7 +3699,7 @@
 #define SELECTCODEC_MSG "Codec number : .."
 static void handle_select_codec(struct unistimsession *pte)
 {
-	char buf[30], buf2[5];
+	char buf[30], buf2[6];
 
 	pte->state = STATE_SELECTCODEC;
 	ast_copy_string(buf, ustmtext("Using codec", pte), sizeof(buf));
diff --git a/channels/iax2/firmware.c b/channels/iax2/firmware.c
index a1ee435..0286132 100644
--- a/channels/iax2/firmware.c
+++ b/channels/iax2/firmware.c
@@ -46,6 +46,8 @@
 
 #include "include/firmware.h"
 
+#define IAX_FIRMWARE_SUBDIR "/firmware/iax"
+
 struct iax_firmware {
 	AST_LIST_ENTRY(iax_firmware) list;
 	int fd;
@@ -208,7 +210,7 @@
 	struct iax_firmware *cur = NULL;
 	DIR *fwd;
 	struct dirent *de;
-	char dir[256], fn[256];
+	char fn[PATH_MAX + sizeof(IAX_FIRMWARE_SUBDIR) + sizeof(de->d_name)];
 
 	AST_LIST_LOCK(&firmwares);
 
@@ -218,12 +220,13 @@
 	}
 
 	/* Now that we have marked them dead... load new ones */
-	snprintf(dir, sizeof(dir), "%s/firmware/iax", ast_config_AST_DATA_DIR);
-	fwd = opendir(dir);
+	snprintf(fn, sizeof(fn), "%s%s", ast_config_AST_DATA_DIR, IAX_FIRMWARE_SUBDIR);
+	fwd = opendir(fn);
 	if (fwd) {
 		while((de = readdir(fwd))) {
 			if (de->d_name[0] != '.') {
-				snprintf(fn, sizeof(fn), "%s/%s", dir, de->d_name);
+				snprintf(fn, sizeof(fn), "%s%s/%s",
+					ast_config_AST_DATA_DIR, IAX_FIRMWARE_SUBDIR, de->d_name);
 				if (!try_firmware(fn)) {
 					ast_verb(2, "Loaded firmware '%s'\n", de->d_name);
 				}
@@ -231,7 +234,7 @@
 		}
 		closedir(fwd);
 	} else {
-		ast_log(LOG_WARNING, "Error opening firmware directory '%s': %s\n", dir, strerror(errno));
+		ast_log(LOG_WARNING, "Error opening firmware directory '%s': %s\n", fn, strerror(errno));
 	}
 
 	/* Clean up leftovers */
diff --git a/main/Makefile b/main/Makefile
index bbddb03..2521585 100644
--- a/main/Makefile
+++ b/main/Makefile
@@ -140,6 +140,7 @@
 	$(CMD_PREFIX) rm $@.fix
 
 ast_expr2f.o: _ASTCFLAGS+=-Wno-unused
+cdr.o: _ASTCFLAGS+=-Wno-format-truncation
 
 testexpr2: ast_expr2f.c ast_expr2.c ast_expr2.h
 	$(CC) -g -c -Iinclude -DSTANDALONE ast_expr2f.c
@@ -314,7 +315,7 @@
 
 endif
 
-tcptls.o: _ASTCFLAGS+=$(OPENSSL_INCLUDE)
+tcptls.o: _ASTCFLAGS+=$(OPENSSL_INCLUDE) -Wno-deprecated-declarations
 
 $(MAIN_TGT): $(OBJS) $(ASTSSL_LIB) $(ASTPJ_LIB) $(LIBEDIT_OBJ)
 	@$(CC) -c -o buildinfo.o $(_ASTCFLAGS) buildinfo.c $(ASTCFLAGS)
diff --git a/main/ast_expr2.c b/main/ast_expr2.c
index a3c715a..1b866fa 100644
--- a/main/ast_expr2.c
+++ b/main/ast_expr2.c
@@ -2637,13 +2637,11 @@
 	if (vp->type == AST_EXPR_string || vp->type == AST_EXPR_numeric_string)
 		return;
 
-	tmp = malloc ((size_t)25);
-	if (tmp == NULL) {
-		ast_log(LOG_WARNING,"malloc() failed\n");
+	if (asprintf(&tmp, FP___PRINTF, vp->u.i) == -1) {
+		ast_log(LOG_WARNING, "asprintf() failed\n");
 		return;
 	}
 
-	sprintf(tmp, FP___PRINTF, vp->u.i);
 	vp->type = AST_EXPR_string;
 	vp->u.s  = tmp;
 }
diff --git a/main/ast_expr2.y b/main/ast_expr2.y
index 4f60877..7163a71 100644
--- a/main/ast_expr2.y
+++ b/main/ast_expr2.y
@@ -630,13 +630,11 @@
 	if (vp->type == AST_EXPR_string || vp->type == AST_EXPR_numeric_string)
 		return;
 
-	tmp = malloc ((size_t)25);
-	if (tmp == NULL) {
-		ast_log(LOG_WARNING,"malloc() failed\n");
+	if (asprintf(&tmp, FP___PRINTF, vp->u.i) == -1) {
+		ast_log(LOG_WARNING, "asprintf() failed\n");
 		return;
 	}
 
-	sprintf(tmp, FP___PRINTF, vp->u.i);
 	vp->type = AST_EXPR_string;
 	vp->u.s  = tmp;
 }
diff --git a/main/asterisk.c b/main/asterisk.c
index ac078dd..e071f6f 100644
--- a/main/asterisk.c
+++ b/main/asterisk.c
@@ -386,6 +386,9 @@
 
 static void asterisk_daemon(int isroot, const char *runuser, const char *rungroup);
 
+#define DEFAULT_MONITOR_DIR DEFAULT_SPOOL_DIR "/monitor"
+#define DEFAULT_RECORDING_DIR DEFAULT_SPOOL_DIR "/recording"
+
 struct _cfg_paths {
 	char config_dir[PATH_MAX];
 	char module_dir[PATH_MAX];
@@ -3654,8 +3657,8 @@
 	ast_copy_string(cfg_paths.config_dir, DEFAULT_CONFIG_DIR, sizeof(cfg_paths.config_dir));
 	ast_copy_string(cfg_paths.spool_dir, DEFAULT_SPOOL_DIR, sizeof(cfg_paths.spool_dir));
 	ast_copy_string(cfg_paths.module_dir, DEFAULT_MODULE_DIR, sizeof(cfg_paths.module_dir));
-	snprintf(cfg_paths.monitor_dir, sizeof(cfg_paths.monitor_dir), "%s/monitor", cfg_paths.spool_dir);
-	snprintf(cfg_paths.recording_dir, sizeof(cfg_paths.recording_dir), "%s/recording", cfg_paths.spool_dir);
+	ast_copy_string(cfg_paths.monitor_dir, DEFAULT_MONITOR_DIR, sizeof(cfg_paths.monitor_dir));
+	ast_copy_string(cfg_paths.recording_dir, DEFAULT_RECORDING_DIR, sizeof(cfg_paths.recording_dir));
 	ast_copy_string(cfg_paths.var_dir, DEFAULT_VAR_DIR, sizeof(cfg_paths.var_dir));
 	ast_copy_string(cfg_paths.data_dir, DEFAULT_DATA_DIR, sizeof(cfg_paths.data_dir));
 	ast_copy_string(cfg_paths.log_dir, DEFAULT_LOG_DIR, sizeof(cfg_paths.log_dir));
diff --git a/main/ccss.c b/main/ccss.c
index 002b9a3..5067751 100644
--- a/main/ccss.c
+++ b/main/ccss.c
@@ -3552,7 +3552,7 @@
  */
 static void cc_unique_append(struct ast_str **str, const char *dialstring)
 {
-	char dialstring_search[AST_CHANNEL_NAME];
+	char dialstring_search[AST_CHANNEL_NAME + 1];
 
 	if (ast_strlen_zero(dialstring)) {
 		/* No dialstring to append. */
diff --git a/main/cli.c b/main/cli.c
index 1af9177..e9ed709 100644
--- a/main/cli.c
+++ b/main/cli.c
@@ -374,7 +374,7 @@
 	int i, count = 0;
 	unsigned int prospective[2];
 	unsigned int part = strtoul(partial, NULL, 10);
-	char next[12];
+	char next[13];
 
 	if (part < min || part > max) {
 		return NULL;
@@ -1031,7 +1031,7 @@
 	it_chans = ao2_iterator_init(channels, 0);
 	for (; (msg = ao2_iterator_next(&it_chans)); ao2_ref(msg, -1)) {
 		struct ast_channel_snapshot *cs = stasis_message_data(msg);
-		char durbuf[10] = "-";
+		char durbuf[16] = "-";
 
 		if (!count) {
 			if ((concise || verbose)  && !ast_tvzero(cs->creationtime)) {
diff --git a/main/libasteriskssl.c b/main/libasteriskssl.c
index dcb3f88..a89f191 100644
--- a/main/libasteriskssl.c
+++ b/main/libasteriskssl.c
@@ -31,19 +31,20 @@
 
 ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 
+#include "asterisk/_private.h" /* ast_ssl_init() */
+
 #ifdef HAVE_OPENSSL
 #include <openssl/ssl.h>
 #include <openssl/err.h>
 #endif
 
-#include <dlfcn.h>
+#if defined(HAVE_OPENSSL) && \
+	!defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
 
-#include "asterisk/_private.h" /* ast_ssl_init() */
+#include <dlfcn.h>
 
 #include "asterisk/utils.h"
 #include "asterisk/lock.h"
-
-#ifdef HAVE_OPENSSL
 
 #define get_OpenSSL_function(func) do { real_##func = dlsym(RTLD_NEXT, __stringify(func)); } while(0)
 
@@ -74,7 +75,6 @@
 	}
 }
 
-#if !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
 int SSL_library_init(void)
 {
 #if defined(AST_DEVMODE)
@@ -116,9 +116,6 @@
 {
 	/* we can't allow this to be called, ever */
 }
-#endif /* !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x10100000L */
-
-#endif /* HAVE_OPENSSL */
 
 /*!
  * \internal
@@ -128,8 +125,6 @@
  */
 int ast_ssl_init(void)
 {
-#if defined(HAVE_OPENSSL) && defined(OPENSSL_VERSION_NUMBER) && \
-	(OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER))
 	unsigned int i;
 	int (*real_SSL_library_init)(void);
 	void (*real_CRYPTO_set_id_callback)(unsigned long (*)(void));
@@ -194,7 +189,14 @@
 
 	startup_complete = 1;
 
-#endif /* HAVE_OPENSSL and its version < 1.1 */
 	return 0;
 }
 
+#else
+
+int ast_ssl_init(void)
+{
+	return 0;
+}
+
+#endif
diff --git a/main/manager.c b/main/manager.c
index 2f16f04..17057b3 100644
--- a/main/manager.c
+++ b/main/manager.c
@@ -6081,7 +6081,7 @@
 	for (; (msg = ao2_iterator_next(&it_chans)); ao2_ref(msg, -1)) {
 		struct ast_channel_snapshot *cs = stasis_message_data(msg);
 		struct ast_str *built = ast_manager_build_channel_state_string_prefix(cs, "");
-		char durbuf[10] = "";
+		char durbuf[16] = "";
 
 		if (!built) {
 			continue;
diff --git a/main/stdtime/localtime.c b/main/stdtime/localtime.c
index 9cdf614..5b5526e 100644
--- a/main/stdtime/localtime.c
+++ b/main/stdtime/localtime.c
@@ -2436,7 +2436,7 @@
 			cur = NULL;
 			AST_LIST_LOCK(&localelist);
 			for (x = 0; x < 10000; x++) {
-				char name[5];
+				char name[6];
 				snprintf(name, sizeof(name), "%04d", x);
 				if (!find_by_name(name)) {
 					if ((cur = ast_calloc(1, sizeof(*cur) + strlen(name) + 1))) {
diff --git a/main/utils.c b/main/utils.c
index b31db59..0824a37 100644
--- a/main/utils.c
+++ b/main/utils.c
@@ -1530,7 +1530,7 @@
 	int found = 0;
 	char stack[8];
 
-	if (iss == NULL || *iss == '\0') {
+	if (ast_strlen_zero(st)) {
 		return NULL;
 	}
 
diff --git a/res/res_calendar.c b/res/res_calendar.c
index 3725c94..298970a 100644
--- a/res/res_calendar.c
+++ b/res/res_calendar.c
@@ -735,7 +735,7 @@
 	struct ast_channel *chan = NULL;
 	struct ast_variable *itervar;
 	char *tech, *dest;
-	char buf[8];
+	char buf[33];
 	struct ast_format_cap *caps;
 
 	tech = ast_strdupa(event->owner->notify_channel);
diff --git a/res/res_config_pgsql.c b/res/res_config_pgsql.c
index e74b730..b0a24c4 100644
--- a/res/res_config_pgsql.c
+++ b/res/res_config_pgsql.c
@@ -1329,7 +1329,7 @@
 					/* Size is minimum length; make it at least 50% greater,
 					 * just to be sure, because PostgreSQL doesn't support
 					 * resizing columns. */
-					snprintf(fieldtype, sizeof(fieldtype), "CHAR(%d)",
+					snprintf(fieldtype, sizeof(fieldtype), "CHAR(%hhu)",
 						size < 15 ? size * 2 :
 						(size * 3 / 2 > 255) ? 255 : size * 3 / 2);
 				} else if (type == RQ_INTEGER1 || type == RQ_UINTEGER1 || type == RQ_INTEGER2) {
diff --git a/res/res_monitor.c b/res/res_monitor.c
index ebf9843..7ec1bb6 100644
--- a/res/res_monitor.c
+++ b/res/res_monitor.c
@@ -460,7 +460,7 @@
 	LOCK_IF_NEEDED(chan, need_lock);
 
 	if (ast_channel_monitor(chan)) {
-		char filename[ FILENAME_MAX ];
+		RAII_VAR(struct ast_str *, tmp, ast_str_create(1024), ast_free);
 
 		if (ast_channel_monitor(chan)->read_stream) {
 			ast_closestream(ast_channel_monitor(chan)->read_stream);
@@ -469,31 +469,29 @@
 			ast_closestream(ast_channel_monitor(chan)->write_stream);
 		}
 
-		if (ast_channel_monitor(chan)->filename_changed && !ast_strlen_zero(ast_channel_monitor(chan)->filename_base)) {
+		if (tmp && ast_channel_monitor(chan)->filename_changed && !ast_strlen_zero(ast_channel_monitor(chan)->filename_base)) {
 			if (ast_fileexists(ast_channel_monitor(chan)->read_filename,NULL,NULL) > 0) {
-				snprintf(filename, FILENAME_MAX, "%s-in", ast_channel_monitor(chan)->filename_base);
-				if (ast_fileexists(filename, NULL, NULL) > 0) {
-					ast_filedelete(filename, NULL);
+				ast_str_set(&tmp, 0, "%s-in", ast_channel_monitor(chan)->filename_base);
+				if (ast_fileexists(ast_str_buffer(tmp), NULL, NULL) > 0) {
+					ast_filedelete(ast_str_buffer(tmp), NULL);
 				}
-				ast_filerename(ast_channel_monitor(chan)->read_filename, filename, ast_channel_monitor(chan)->format);
+				ast_filerename(ast_channel_monitor(chan)->read_filename, ast_str_buffer(tmp), ast_channel_monitor(chan)->format);
 			} else {
 				ast_log(LOG_WARNING, "File %s not found\n", ast_channel_monitor(chan)->read_filename);
 			}
 
-			if (ast_fileexists(ast_channel_monitor(chan)->write_filename,NULL,NULL) > 0) {
-				snprintf(filename, FILENAME_MAX, "%s-out", ast_channel_monitor(chan)->filename_base);
-				if (ast_fileexists(filename, NULL, NULL) > 0) {
-					ast_filedelete(filename, NULL);
+			if (tmp && ast_fileexists(ast_channel_monitor(chan)->write_filename,NULL,NULL) > 0) {
+				ast_str_set(&tmp, 0, "%s-out", ast_channel_monitor(chan)->filename_base);
+				if (ast_fileexists(ast_str_buffer(tmp), NULL, NULL) > 0) {
+					ast_filedelete(ast_str_buffer(tmp), NULL);
 				}
-				ast_filerename(ast_channel_monitor(chan)->write_filename, filename, ast_channel_monitor(chan)->format);
+				ast_filerename(ast_channel_monitor(chan)->write_filename, ast_str_buffer(tmp), ast_channel_monitor(chan)->format);
 			} else {
 				ast_log(LOG_WARNING, "File %s not found\n", ast_channel_monitor(chan)->write_filename);
 			}
 		}
 
-		if (ast_channel_monitor(chan)->joinfiles && !ast_strlen_zero(ast_channel_monitor(chan)->filename_base)) {
-			char tmp[1024];
-			char tmp2[1024];
+		if (tmp && ast_channel_monitor(chan)->joinfiles && !ast_strlen_zero(ast_channel_monitor(chan)->filename_base)) {
 			const char *format = !strcasecmp(ast_channel_monitor(chan)->format,"wav49") ? "WAV" : ast_channel_monitor(chan)->format;
 			char *fname_base = ast_channel_monitor(chan)->filename_base;
 			const char *execute, *execute_args;
@@ -514,16 +512,17 @@
 			if (ast_strlen_zero(execute_args)) {
 				execute_args = "";
 			}
-			
-			snprintf(tmp, sizeof(tmp), "%s \"%s-in.%s\" \"%s-out.%s\" \"%s.%s\" %s &",
+
+			ast_str_set(&tmp, 0, delfiles ? "( " : "");
+			ast_str_append(&tmp, 0, "%s \"%s-in.%s\" \"%s-out.%s\" \"%s.%s\" %s &",
 				execute, fname_base, format, fname_base, format, fname_base, format,execute_args);
 			if (delfiles) {
-				snprintf(tmp2,sizeof(tmp2), "( %s& rm -f \"%s-\"* ) &",tmp, fname_base); /* remove legs when done mixing */
-				ast_copy_string(tmp, tmp2, sizeof(tmp));
+				/* remove legs when done mixing */
+				ast_str_append(&tmp, 0, "& rm -f \"%s-\"* ) &", fname_base);
 			}
-			ast_debug(1,"monitor executing %s\n",tmp);
-			if (ast_safe_system(tmp) == -1)
-				ast_log(LOG_WARNING, "Execute of %s failed.\n",tmp);
+			ast_debug(1,"monitor executing %s\n", ast_str_buffer(tmp));
+			if (ast_safe_system(ast_str_buffer(tmp)) == -1)
+				ast_log(LOG_WARNING, "Execute of %s failed.\n", ast_str_buffer(tmp));
 		}
 
 		if (!ast_strlen_zero(ast_channel_monitor(chan)->beep_id)) {
diff --git a/utils/astman.c b/utils/astman.c
index 315b3b0..9e0373c 100644
--- a/utils/astman.c
+++ b/utils/astman.c
@@ -289,7 +289,7 @@
 {
 	void *prev = NULL;
 	struct ast_chan *chan;
-	char tmpn[42];
+	char tmpn[sizeof(chan->name) + sizeof(chan->callerid) + 3 - 1];
 	char tmp[256];
 	int x=0;
 	prev = newtListboxGetCurrent(c);
diff --git a/utils/extconf.c b/utils/extconf.c
index 7989bcd..837971b 100644
--- a/utils/extconf.c
+++ b/utils/extconf.c
@@ -4590,6 +4590,10 @@
 	struct ast_exten *e, *eroot;
 	struct ast_include *i;
 
+	if (!context) {
+		return NULL;
+	}
+
 	/* Initialize status if appropriate */
 	if (q->stacklen == 0) {
 		q->status = STATUS_NO_CONTEXT;

-- 
To view, visit https://gerrit.asterisk.org/6113
To unsubscribe, visit https://gerrit.asterisk.org/settings

Gerrit-Project: asterisk
Gerrit-Branch: 13
Gerrit-MessageType: merged
Gerrit-Change-Id: I65f280e7d3cfad279d16f41823a4d6fddcbc4c88
Gerrit-Change-Number: 6113
Gerrit-PatchSet: 5
Gerrit-Owner: Corey Farrell <git at cfware.com>
Gerrit-Reviewer: George Joseph <gjoseph at digium.com>
Gerrit-Reviewer: Jenkins2
Gerrit-Reviewer: Kevin Harwell <kharwell at digium.com>
Gerrit-Reviewer: Matthew Fredrickson <creslin at digium.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-code-review/attachments/20170801/02c317f1/attachment-0001.html>


More information about the asterisk-code-review mailing list