This project does not seem to handle request data directly as such no vulnerable execution paths were found.
include
, or for example
via PHP's auto-loading mechanism.
1 | <?php |
||||
2 | |||||
3 | /** |
||||
4 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
||||
5 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
||||
6 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
||||
7 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
||||
8 | * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
9 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
||||
10 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
||||
11 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
||||
12 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
||||
13 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
||||
14 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
15 | * |
||||
16 | * This software consists of voluntary contributions made by many individuals |
||||
17 | * and is licensed under the LGPL. For more information please see |
||||
18 | * <http://phing.info>. |
||||
19 | */ |
||||
20 | |||||
21 | namespace Phing\Mapper; |
||||
22 | |||||
23 | use Phing\Exception\BuildException; |
||||
24 | use Phing\Util\Regexp; |
||||
25 | |||||
26 | /** |
||||
27 | * Uses regular expressions to perform filename transformations. |
||||
28 | * |
||||
29 | * @author Andreas Aderhold <[email protected]> |
||||
30 | * @author Hans Lellelid <[email protected]> |
||||
31 | */ |
||||
32 | class RegexpMapper implements FileNameMapper |
||||
33 | { |
||||
34 | /** |
||||
35 | * @var string |
||||
36 | */ |
||||
37 | private $to; |
||||
38 | |||||
39 | /** |
||||
40 | * The Regexp engine. |
||||
41 | * |
||||
42 | * @var Regexp |
||||
43 | */ |
||||
44 | private $reg; |
||||
45 | |||||
46 | private $handleDirSep = false; |
||||
47 | private $caseSensitive = true; |
||||
48 | |||||
49 | /** |
||||
50 | * Instantiage regexp matcher here. |
||||
51 | */ |
||||
52 | public function __construct() |
||||
53 | { |
||||
54 | $this->reg = new Regexp(); |
||||
55 | $this->reg->setIgnoreCase(!$this->caseSensitive); |
||||
56 | } |
||||
57 | |||||
58 | /** |
||||
59 | * Attribute specifying whether to ignore the difference |
||||
60 | * between / and \ (the two common directory characters). |
||||
61 | * |
||||
62 | * @param bool $handleDirSep a boolean, default is false |
||||
63 | */ |
||||
64 | public function setHandleDirSep($handleDirSep) |
||||
65 | { |
||||
66 | $this->handleDirSep = $handleDirSep; |
||||
67 | } |
||||
68 | |||||
69 | /** |
||||
70 | * Attribute specifying whether to ignore the difference |
||||
71 | * between / and \ (the two common directory characters). |
||||
72 | */ |
||||
73 | public function getHandleDirSep() |
||||
74 | { |
||||
75 | return $this->handleDirSep; |
||||
76 | } |
||||
77 | |||||
78 | /** |
||||
79 | * Attribute specifying whether to ignore the case difference |
||||
80 | * in the names. |
||||
81 | * |
||||
82 | * @param bool $caseSensitive a boolean, default is false |
||||
83 | */ |
||||
84 | public function setCaseSensitive($caseSensitive) |
||||
85 | { |
||||
86 | $this->caseSensitive = $caseSensitive; |
||||
87 | } |
||||
88 | |||||
89 | /** |
||||
90 | * Sets the "from" pattern. Required. |
||||
91 | * {@inheritdoc} |
||||
92 | * |
||||
93 | * @param string $from |
||||
94 | */ |
||||
95 | public function setFrom($from) |
||||
96 | { |
||||
97 | if (null === $from) { |
||||
0 ignored issues
–
show
introduced
by
![]() |
|||||
98 | throw new BuildException("this mapper requires a 'from' attribute"); |
||||
99 | } |
||||
100 | |||||
101 | $this->reg->setPattern($from); |
||||
102 | } |
||||
103 | |||||
104 | /** |
||||
105 | * Sets the "to" pattern. Required. |
||||
106 | * |
||||
107 | * {@inheritdoc} |
||||
108 | * |
||||
109 | * @param string $to |
||||
110 | * |
||||
111 | * @intern [HL] I'm changing the way this works for now to just use string |
||||
112 | * <code>$this->to = StringHelper::toCharArray($to);</code> |
||||
113 | */ |
||||
114 | public function setTo($to) |
||||
115 | { |
||||
116 | if (null === $to) { |
||||
0 ignored issues
–
show
|
|||||
117 | throw new BuildException("this mapper requires a 'to' attribute"); |
||||
118 | } |
||||
119 | |||||
120 | $this->to = $to; |
||||
121 | } |
||||
122 | |||||
123 | /** |
||||
124 | * {@inheritdoc} |
||||
125 | * |
||||
126 | * @return null|array |
||||
127 | */ |
||||
128 | public function main($sourceFileName) |
||||
129 | { |
||||
130 | if ($this->handleDirSep) { |
||||
131 | if (false !== strpos('\\', $sourceFileName)) { |
||||
132 | $sourceFileName = str_replace('\\', '/', $sourceFileName); |
||||
133 | } |
||||
134 | } |
||||
135 | if (null === $this->reg || null === $this->to || !$this->reg->matches((string) $sourceFileName)) { |
||||
136 | return null; |
||||
137 | } |
||||
138 | |||||
139 | return [$this->replaceReferences($sourceFileName)]; |
||||
140 | } |
||||
141 | |||||
142 | /** |
||||
143 | * Replace all backreferences in the to pattern with the matched groups. |
||||
144 | * groups of the source. |
||||
145 | * |
||||
146 | * @param string $source the source filename |
||||
147 | * |
||||
148 | * @return null|array|string |
||||
149 | * |
||||
150 | * FIXME Can't we just use engine->replace() to handle this? the Preg engine will automatically convert \1 references to $1 |
||||
151 | * |
||||
152 | * @intern the expression has already been processed (when ->matches() was run in Main()) |
||||
153 | * so no need to pass $source again to the engine. |
||||
154 | * Replaces \1 with value of reg->getGroup(1) and return the modified "to" string. |
||||
155 | */ |
||||
156 | private function replaceReferences($source) |
||||
0 ignored issues
–
show
The parameter
$source is not used and could be removed.
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
This check looks for parameters that have been defined for a function or method, but which are not used in the method body. ![]() |
|||||
157 | { |
||||
158 | return preg_replace_callback('/\\\([\d]+)/', [$this, 'replaceReferencesCallback'], $this->to); |
||||
159 | } |
||||
160 | |||||
161 | /** |
||||
162 | * Gets the matched group from the Regexp engine. |
||||
163 | * |
||||
164 | * @param array $matches matched elements |
||||
165 | * |
||||
166 | * @return string |
||||
167 | */ |
||||
168 | private function replaceReferencesCallback($matches) |
||||
169 | { |
||||
170 | return (string) $this->reg->getGroup($matches[1]); |
||||
171 | } |
||||
172 | } |
||||
173 |