-
Problem report
-
Resolution: Fixed
-
Trivial
-
5.2.0alpha3
-
None
-
Ubuntu 20.04 via WLS2
-
Sprint 68 (Sep 2020)
-
0.125
Steps to reproduce:
- Check out latest master
$ git branch -v * master dc91fd6 .......PS. [ZBX-18121] fixed SSH monitoring when compiled with libssh
- Build minimal agent
./bootstrap.sh && ./configure --enable-agent && make
Result:
In file included from logfiles.c:22: In function ‘split_string’, inlined from ‘split_filename’ at logfiles.c:204:17, inlined from ‘make_logfile_list’ at logfiles.c:1687:25, inlined from ‘process_logrt’ at logfiles.c:3007:24: ../../../include/log.h:69:4: warning: ‘%s’ directive argument is null [-Wformat-overflow=] 69 | __zbx_zabbix_log(level, __VA_ARGS__); \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ logfiles.c:94:2: note: in expansion of macro ‘zabbix_log’ 94 | zabbix_log(LOG_LEVEL_DEBUG, "End of %s():%s part1:'%s' part2:'%s'", __func__, zbx_result_string(ret), | ^~~~~~~~~~ logfiles.c: In function ‘process_logrt’: logfiles.c:94:53: note: format string is defined here 94 | zabbix_log(LOG_LEVEL_DEBUG, "End of %s():%s part1:'%s' part2:'%s'", __func__, zbx_result_string(ret), | ^~ In file included from logfiles.c:22: In function ‘split_filename’, inlined from ‘make_logfile_list’ at logfiles.c:1687:25, inlined from ‘process_logrt’ at logfiles.c:3007:24: ../../../include/log.h:69:4: warning: ‘%s’ directive argument is null [-Wformat-overflow=] 69 | __zbx_zabbix_log(level, __VA_ARGS__); \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ logfiles.c:229:2: note: in expansion of macro ‘zabbix_log’ 229 | zabbix_log(LOG_LEVEL_DEBUG, "End of %s():%s directory:'%s' filename_regexp:'%s'", __func__, | ^~~~~~~~~~ logfiles.c: In function ‘process_logrt’: logfiles.c:229:57: note: format string is defined here 229 | zabbix_log(LOG_LEVEL_DEBUG, "End of %s():%s directory:'%s' filename_regexp:'%s'", __func__, | ^~
$ gcc --version gcc (Ubuntu 9.3.0-10ubuntu2) 9.3.0 Copyright (C) 2019 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Expected:
It seems to me that GCC is making a valid point here. Around here directory is assigned NULL and is passed to split_filename() where it accidentally gets printed. On some platforms it can lead to crash.