[asterisk-bugs] [JIRA] (ASTERISK-29146) GCC Warnings: ‘%s’ directive argument is null.
Alexander Traud (JIRA)
noreply at issues.asterisk.org
Fri Oct 30 03:40:15 CDT 2020
Alexander Traud created ASTERISK-29146:
------------------------------------------
Summary: GCC Warnings: ‘%s’ directive argument is null.
Key: ASTERISK-29146
URL: https://issues.asterisk.org/jira/browse/ASTERISK-29146
Project: Asterisk
Issue Type: Bug
Security Level: None
Components: . I did not set the category correctly.
Affects Versions: 18.0.0, 16.14.0
Reporter: Alexander Traud
Severity: Trivial
In Ubuntu 20.10 with GCC 10.2, a simple
{code}./configure
make{code}gives{code}In function ‘handle_cli_indication_add’,
inlined from ‘handle_cli_indication_add’ at indications.c:658:14:
indications.c:705:3: warning: ‘%s’ directive argument is null [-Wformat-overflow=]
705 | ast_log(LOG_WARNING, "Unable to register indication %s/%s\n", a->argv[2], a->argv[3]);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{code}On default, Asterisk compiles with [optimization level|http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html] 3. This warning does not happen with DONT_OPTIMIZE, which is level 0, which we developers use normally. Actually, GCC sees that argv\[3\] might be NULL when logging this warning. And NULL is not a good value for built-in functions, [see…|http://stackoverflow.com/q/11589342]
While debugging this GCC warning, I changed {{ast_strlen_zero()}} in the file {{include/strings.h}} to return just {{return (!s);}}. That revealed another four places in code which are called with a NULL value always:{code}In function ‘add_calltoken_ignore’,
inlined from ‘set_config’ at chan_iax2.c:13817:8:
chan_iax2.c:2803:3: warning: ‘%s’ directive argument is null [-Wformat-overflow=]
2803 | ast_log(LOG_WARNING, "invalid calltokenoptional %s\n", addr);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In function ‘proc_422_rsp’,
inlined from ‘handle_response_invite’ at chan_sip.c:24453:3:
chan_sip.c:30384:3: warning: ‘%s’ directive argument is null [-Wformat-overflow=]
30384 | ast_log(LOG_WARNING, "422 response without a Min-SE header %s\n", p_hdrval);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from .../include/asterisk/lock.h:63,
from chan_sip.c:236:
chan_sip.c: In function ‘handle_request_subscribe’:
.../include/asterisk/logger.h:447:4: warning: ‘%s’ directive argument is null [-Wformat-overflow=]
447 | ast_log(AST_LOG_DEBUG, __VA_ARGS__); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
chan_sip.c:28804:4: note: in expansion of macro ‘ast_debug’
28804 | ast_debug(2, "Received SIP mailbox subscription for unknown format: %s\n", accept);
| ^~~~~~~~~
chan_sip.c:28804:72: note: format string is defined here
28804 | ast_debug(2, "Received SIP mailbox subscription for unknown format: %s\n", accept);
| ^~
res_stir_shaken.c: In function ‘stir_shaken_read’:
res_stir_shaken.c:1202:3: warning: ‘%s’ directive argument is null [-Wformat-overflow=]
1202 | ast_log(LOG_ERROR, "Retrieving a value using %s requires two paramaters (index, value) "
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1203 | "- only index was given (%s)\n", function, second);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
res_stir_shaken.c:1203:29: note: format string is defined here
1203 | "- only index was given (%s)\n", function, second);
| ^~{code}
--
This message was sent by Atlassian JIRA
(v6.2#6252)
More information about the asterisk-bugs
mailing list