diff options
author | Peter Wu | 2014-07-20 23:30:49 +0200 |
---|---|---|
committer | Peter Wu | 2014-07-20 23:30:49 +0200 |
commit | 4a737bc1abdbef7e0698b006704a26583a4c61df (patch) | |
tree | 7d5f51f76acd43d1aeda601dd7201e2c158bdae4 /type/GenericIO.class.php | |
parent | security: Add missing input validation for plugin (diff) | |
download | apt-panopticon_cgp-4a737bc1abdbef7e0698b006704a26583a4c61df.zip apt-panopticon_cgp-4a737bc1abdbef7e0698b006704a26583a4c61df.tar.gz apt-panopticon_cgp-4a737bc1abdbef7e0698b006704a26583a4c61df.tar.bz2 apt-panopticon_cgp-4a737bc1abdbef7e0698b006704a26583a4c61df.tar.xz |
Use a more secure command line building method
Previously, a command is built by string concatenation. Here, the
distinction between a value and multiple params got lost. Solve this
by using an array for shell arguments. As the escaping is now removed
from the `rrd_gen_graph` function, the canvas style needs to manually
add those quotes to make the JS code still work. That only supports
double-quotes, so hopefully nobody creates a name with a double quote
as that would break the fragile JS command line parser.
Separate the rrdtool options from the rrdtool graph command to make the
`$graph_type == 'canvas'` option work (it would otherwise not understand
the `rrdtool graph - -a PNG` option).
Merge the SVG and PNG cases as they are the same except for the
Content-Type header.
Fix a missing html escape in a debug style.
Diffstat (limited to 'type/GenericIO.class.php')
-rw-r--r-- | type/GenericIO.class.php | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/type/GenericIO.class.php b/type/GenericIO.class.php index cab5220..20029a1 100644 --- a/type/GenericIO.class.php +++ b/type/GenericIO.class.php | |||
@@ -59,21 +59,21 @@ class Type_GenericIO extends Type_Base { | |||
59 | $i = 0; | 59 | $i = 0; |
60 | foreach($sources as $source) { | 60 | foreach($sources as $source) { |
61 | $legend = empty($this->legend[$source]) ? $source : $this->legend[$source]; | 61 | $legend = empty($this->legend[$source]) ? $source : $this->legend[$source]; |
62 | $rrdgraph[] = sprintf('"LINE1:avg_%s%s#%s:%s"', crc32hex($source), $i == 1 ? '_neg' : '', $this->colors[$source], $this->rrd_escape($legend)); | 62 | $rrdgraph[] = sprintf('LINE1:avg_%s%s#%s:%s', crc32hex($source), $i == 1 ? '_neg' : '', $this->colors[$source], $this->rrd_escape($legend)); |
63 | $rrdgraph[] = sprintf('"GPRINT:min_%s:MIN:%s Min,"', crc32hex($source), $this->rrd_format); | 63 | $rrdgraph[] = sprintf('GPRINT:min_%s:MIN:%s Min,', crc32hex($source), $this->rrd_format); |
64 | $rrdgraph[] = sprintf('"GPRINT:avg_%s:AVERAGE:%s Avg,"', crc32hex($source), $this->rrd_format); | 64 | $rrdgraph[] = sprintf('GPRINT:avg_%s:AVERAGE:%s Avg,', crc32hex($source), $this->rrd_format); |
65 | $rrdgraph[] = sprintf('"GPRINT:max_%s:MAX:%s Max,"', crc32hex($source), $this->rrd_format); | 65 | $rrdgraph[] = sprintf('GPRINT:max_%s:MAX:%s Max,', crc32hex($source), $this->rrd_format); |
66 | $rrdgraph[] = sprintf('"GPRINT:avg_%s:LAST:%s Last"', crc32hex($source), $this->rrd_format); | 66 | $rrdgraph[] = sprintf('GPRINT:avg_%s:LAST:%s Last', crc32hex($source), $this->rrd_format); |
67 | $rrdgraph[] = sprintf('"GPRINT:tot_%s:%s Total\l"',crc32hex($source), $this->rrd_format); | 67 | $rrdgraph[] = sprintf('GPRINT:tot_%s:%s Total\l',crc32hex($source), $this->rrd_format); |
68 | $i++; | 68 | $i++; |
69 | } | 69 | } |
70 | 70 | ||
71 | if ($this->percentile) { | 71 | if ($this->percentile) { |
72 | $rrdgraph[] = sprintf('"COMMENT: \l"'); | 72 | $rrdgraph[] = 'COMMENT: \l'; |
73 | foreach($sources as $source) { | 73 | foreach($sources as $source) { |
74 | $legend = empty($this->legend[$source]) ? $source : $this->legend[$source]; | 74 | $legend = empty($this->legend[$source]) ? $source : $this->legend[$source]; |
75 | $rrdgraph[] = sprintf('"HRULE:pct_%s#%s:%sth Percentile %s"', crc32hex($source), $this->get_faded_color($this->colors[$source], '000000', 0.6), $this->percentile, $this->rrd_escape($legend)); | 75 | $rrdgraph[] = sprintf('HRULE:pct_%s#%s:%sth Percentile %s', crc32hex($source), $this->get_faded_color($this->colors[$source], '000000', 0.6), $this->percentile, $this->rrd_escape($legend)); |
76 | $rrdgraph[] = sprintf('"GPRINT:pct_%s:%s\l"', crc32hex($source), $this->rrd_format); | 76 | $rrdgraph[] = sprintf('GPRINT:pct_%s:%s\l', crc32hex($source), $this->rrd_format); |
77 | } | 77 | } |
78 | } | 78 | } |
79 | 79 | ||