[Asterisk-code-review] Fix compiler warnings on Fedora 26 / GCC 7. (asterisk[master])
Corey Farrell
asteriskteam at digium.com
Thu Jul 27 22:09:53 CDT 2017
Corey Farrell has uploaded this change for review. ( https://gerrit.asterisk.org/6116
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 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/editline/term.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_monitor.c
25 files changed, 66 insertions(+), 63 deletions(-)
git pull ssh://gerrit.asterisk.org:29418/asterisk refs/changes/16/6116/1
diff --git a/apps/Makefile b/apps/Makefile
index 7730460..d688173 100644
--- a/apps/Makefile
+++ b/apps/Makefile
@@ -29,6 +29,8 @@
$(call MOD_ADD_C,app_confbridge,$(wildcard confbridge/*.c))
+app_voicemail.o: _ASTCFLAGS+=-Wno-format-truncation
+
ifneq ($(findstring $(OSARCH), mingw32 cygwin ),)
LIBS+= -lres_ael_share.so -lres_monitor.so -lres_speech.so
LIBS+= -lres_smdi.so
diff --git a/apps/app_chanspy.c b/apps/app_chanspy.c
index 354b9ea..95ebace 100644
--- a/apps/app_chanspy.c
+++ b/apps/app_chanspy.c
@@ -1442,7 +1442,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 72afa3d..578118a 100644
--- a/apps/app_followme.c
+++ b/apps/app_followme.c
@@ -1558,7 +1558,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 ff9ab34..9359f82 100644
--- a/apps/app_minivm.c
+++ b/apps/app_minivm.c
@@ -2251,7 +2251,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 762119e..0b70108 100644
--- a/apps/app_queue.c
+++ b/apps/app_queue.c
@@ -6601,7 +6601,7 @@
char oldexten[AST_MAX_EXTENSION]="";
char oldcontext[AST_MAX_CONTEXT]="";
char queuename[256]="";
- char interfacevar[256]="";
+ char interfacevar[325]="";
struct ast_channel *peer;
struct ast_channel *which;
struct callattempt *lpeer;
diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c
index 0a07cc1..5f82128 100644
--- a/apps/app_voicemail.c
+++ b/apps/app_voicemail.c
@@ -7913,7 +7913,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 44a0429..ae7107f 100644
--- a/channels/Makefile
+++ b/channels/Makefile
@@ -29,6 +29,8 @@
$(call MOD_ADD_C,chan_dahdi,$(wildcard dahdi/*.c) sig_analog.c sig_pri.c sig_ss7.c)
$(call MOD_ADD_C,chan_misdn,misdn_config.c misdn/isdn_lib.c misdn/isdn_msg_parser.c)
+chan_mgcp.o: _ASTCFLAGS+=-Wno-format-truncation
+
chan_misdn.o: _ASTCFLAGS+=-Imisdn
misdn_config.o: _ASTCFLAGS+=-Imisdn
misdn/isdn_lib.o: _ASTCFLAGS+=-Wno-strict-aliasing
diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c
index 5abb6c3..65cc79b 100644
--- a/channels/chan_iax2.c
+++ b/channels/chan_iax2.c
@@ -8545,7 +8545,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 7d696e8..210cf36 100644
--- a/channels/chan_motif.c
+++ b/channels/chan_motif.c
@@ -1901,7 +1901,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 f2daf2b..3c1014d 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -2085,7 +2085,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));
@@ -15333,7 +15333,7 @@
{
struct sip_request req;
struct sip_cc_agent_pvt *agent_pvt = agent->private_data;
- char uri[SIPBUFSIZE];
+ char uri[SIPBUFSIZE + 11];
char state_str[64];
char subscription_state_hdr[64];
diff --git a/channels/chan_unistim.c b/channels/chan_unistim.c
index b820cf5..f124c0f 100644
--- a/channels/chan_unistim.c
+++ b/channels/chan_unistim.c
@@ -370,7 +370,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 */
@@ -3698,7 +3698,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 00a9d9e..10a0b92 100644
--- a/channels/iax2/firmware.c
+++ b/channels/iax2/firmware.c
@@ -206,7 +206,7 @@
struct iax_firmware *cur = NULL;
DIR *fwd;
struct dirent *de;
- char dir[256], fn[256];
+ char dir[256], fn[257];
AST_LIST_LOCK(&firmwares);
diff --git a/main/Makefile b/main/Makefile
index 4fb6a01..d816443 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 4b06ffe..00f17c5 100644
--- a/main/ast_expr2.c
+++ b/main/ast_expr2.c
@@ -2635,9 +2635,8 @@
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;
}
diff --git a/main/ast_expr2.y b/main/ast_expr2.y
index f516291..3c89430 100644
--- a/main/ast_expr2.y
+++ b/main/ast_expr2.y
@@ -628,13 +628,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 a302836..a9186e6 100644
--- a/main/asterisk.c
+++ b/main/asterisk.c
@@ -397,8 +397,8 @@
char config_dir[PATH_MAX];
char module_dir[PATH_MAX];
char spool_dir[PATH_MAX];
- char monitor_dir[PATH_MAX];
- char recording_dir[PATH_MAX];
+ char monitor_dir[PATH_MAX + 8];
+ char recording_dir[PATH_MAX + 10];
char var_dir[PATH_MAX];
char data_dir[PATH_MAX];
char log_dir[PATH_MAX];
diff --git a/main/ccss.c b/main/ccss.c
index f96d7aa..a9d15b0 100644
--- a/main/ccss.c
+++ b/main/ccss.c
@@ -3546,7 +3546,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 06f2d55..ef86e25 100644
--- a/main/cli.c
+++ b/main/cli.c
@@ -372,7 +372,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/editline/term.c b/main/editline/term.c
index 00b68ed..4da4f0f 100644
--- a/main/editline/term.c
+++ b/main/editline/term.c
@@ -428,7 +428,7 @@
*/
tlen = 0;
for (tmp = tlist; tmp < &tlist[T_str]; tmp++)
- if (*tmp != NULL && *tmp != '\0' && *tmp != *str) {
+ if (*tmp != NULL && *tmp[0] != '\0' && *tmp != *str) {
char *ptr;
for (ptr = *tmp; *ptr != '\0'; termbuf[tlen++] = *ptr++)
diff --git a/main/libasteriskssl.c b/main/libasteriskssl.c
index 9da63de..8b19e24 100644
--- a/main/libasteriskssl.c
+++ b/main/libasteriskssl.c
@@ -29,19 +29,20 @@
#include "asterisk.h"
+#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)
@@ -72,7 +73,6 @@
}
}
-#if !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
int SSL_library_init(void)
{
#if defined(AST_DEVMODE)
@@ -114,9 +114,6 @@
{
/* we can't allow this to be called, ever */
}
-#endif /* !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x10100000L */
-
-#endif /* HAVE_OPENSSL */
/*!
* \internal
@@ -126,8 +123,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));
@@ -192,7 +187,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 1bbd1bb..d16a692 100644
--- a/main/manager.c
+++ b/main/manager.c
@@ -6115,7 +6115,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 bb221ae..88b8020 100644
--- a/main/stdtime/localtime.c
+++ b/main/stdtime/localtime.c
@@ -2434,7 +2434,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 c254db5..de9f8bd 100644
--- a/main/utils.c
+++ b/main/utils.c
@@ -1490,7 +1490,7 @@
int found = 0;
char stack[8];
- if (iss == NULL || *iss == '\0') {
+ if (iss == NULL || *iss[0] == '\0') {
return NULL;
}
diff --git a/res/res_calendar.c b/res/res_calendar.c
index 666b0e1..9ce8159 100644
--- a/res/res_calendar.c
+++ b/res/res_calendar.c
@@ -741,7 +741,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_monitor.c b/res/res_monitor.c
index 2ab52d8..fd3ff7a 100644
--- a/res/res_monitor.c
+++ b/res/res_monitor.c
@@ -457,7 +457,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);
@@ -466,31 +466,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;
@@ -511,16 +509,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)) {
--
To view, visit https://gerrit.asterisk.org/6116
To unsubscribe, visit https://gerrit.asterisk.org/settings
Gerrit-Project: asterisk
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I65f280e7d3cfad279d16f41823a4d6fddcbc4c88
Gerrit-Change-Number: 6116
Gerrit-PatchSet: 1
Gerrit-Owner: Corey Farrell <git at cfware.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-code-review/attachments/20170727/4aafb23a/attachment-0001.html>
More information about the asterisk-code-review
mailing list