[ZBX-9701] Special character $ doesn't pass in external check parameter Created: 2015 Jul 13 Updated: 2017 Oct 24 Resolved: 2017 Oct 24 |
|
| Status: | Closed |
| Project: | ZABBIX BUGS AND ISSUES |
| Component/s: | Proxy (P), Server (S) |
| Affects Version/s: | 2.4.1 |
| Fix Version/s: | None |
| Type: | Problem report | Priority: | Trivial |
| Reporter: | Dmitry Gorobets | Assignee: | Unassigned |
| Resolution: | Duplicate | Votes: | 3 |
| Labels: | escaping, externalchecks | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||
| Description |
|
Zabbix doesn't pass character $ in external check parameter, example: quartz_scheduler_check1.py["-n","cluster-app1","-j","ReceiveMailTask$4","-t","c2c23f92-e4a5-4ed4-8dce-8fb1b55e198b"], result - ['-n', 'cluster-app1', '-j', 'ReceiveMailTask', '-t', 'c2c23f92-e4a5-4ed4-8dce-8fb1b55e198b'] If add backslash() to escape: quartz_scheduler_check1.py["-n","cluster-app1","-j","ReceiveMailTask\$4","-t","c2c23f92-e4a5-4ed4-8dce-8fb1b55e198b"] We'll get ['-n', 'cluster-app1', '-j', 'ReceiveMailTask\\', '-t', 'c2c23f92-e4a5-4ed4-8dce-8fb1b55e198b'] |
| Comments |
| Comment by Aleksandrs Saveljevs [ 2015 Jul 13 ] |
|
The "$" character is passed, but external checks are executed through the shell and so "$" is treated as the beginning of a shell variable. It should probably be solved in a way similar to |
| Comment by Dmitry Gorobets [ 2015 Jul 13 ] |
|
I tried to solve problem with single quotes, but it didn't help. |
| Comment by Aleksandrs Saveljevs [ 2015 Jul 13 ] |
|
Above I meant that the server should single-quote the arguments instead of double-quoting them at src/zabbix_server/poller/checks_external.c, function get_value_external(). In other words, you are correct that there is a bug in Zabbix. |
| Comment by Dmitry Gorobets [ 2015 Jul 13 ] |
|
Zabbix version 2.4.1 (revision 49643) |
| Comment by Dmitry Gorobets [ 2015 Jul 15 ] |
|
Bug can be fixed by editing line 88 at src/zabbix_server/poller/checks_external.c checks_external.c
zbx_snprintf_alloc(&cmd, &cmd_alloc, &cmd_offset, " \"%s\"", param_esc);
to checks_external.c
zbx_snprintf_alloc(&cmd, &cmd_alloc, &cmd_offset, " '%s'", param_esc);
|
| Comment by Aleksandrs Saveljevs [ 2015 Jul 16 ] |
|
Just a note that the patch above does solve the reporter's case, but will generally make things much worse: external items with parameters containing double quotes, backslashes and especially single quotes will no longer work. |
| Comment by Tom M. [ 2015 Oct 19 ] |
|
The same issue is present in the 2.2 release (as seen on zabbix-server-2.2.10-1.el6.x86_64). |
| Comment by Glebs Ivanovskis (Inactive) [ 2017 Oct 24 ] |
|
Closing as Duplicate of |