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.
These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
1 | <?php |
||
2 | |||
3 | namespace SocialLinks\Providers; |
||
4 | |||
5 | use SocialLinks\Page; |
||
6 | use DOMDocument; |
||
7 | |||
8 | /** |
||
9 | * Base class extended by all providers. |
||
10 | * |
||
11 | * @property string $shareUrl |
||
12 | * @property null|int $shareCount |
||
13 | */ |
||
14 | abstract class ProviderBase |
||
15 | { |
||
16 | protected $page; |
||
17 | |||
18 | const RFC1738 = 1; |
||
19 | const RFC3986 = 2; |
||
20 | |||
21 | /** |
||
22 | * Constructor. |
||
23 | * |
||
24 | * @param Page $page |
||
25 | */ |
||
26 | public function __construct(Page $page) |
||
27 | { |
||
28 | $this->page = $page; |
||
29 | } |
||
30 | |||
31 | /** |
||
32 | * Magic method to calculate and store the properties. |
||
33 | */ |
||
34 | public function __get($key) |
||
35 | { |
||
36 | switch ($key) { |
||
37 | case 'shareUrl': |
||
38 | return $this->shareUrl = $this->shareUrl(); |
||
39 | |||
40 | case 'shareCount': |
||
41 | $request = $this->shareCountRequest(); |
||
0 ignored issues
–
show
|
|||
42 | |||
43 | if ($request !== null) { |
||
44 | $response = curl_exec($request) ?: ''; |
||
45 | curl_close($request); |
||
46 | |||
47 | return $this->shareCount = $this->shareCount($response); |
||
0 ignored issues
–
show
Are you sure the assignment to
$this->shareCount is correct as $this->shareCount($response) (which targets SocialLinks\Providers\ProviderBase::shareCount() ) seems to always return null.
This check looks for function or method calls that always return null and whose return value is assigned to a variable. class A
{
function getObject()
{
return null;
}
}
$a = new A();
$object = $a->getObject();
The method The reason is most likely that a function or method is imcomplete or has been reduced for debug purposes. ![]() |
|||
48 | } |
||
49 | |||
50 | return $this->shareCount = null; |
||
51 | } |
||
52 | } |
||
53 | |||
54 | /** |
||
55 | * Default shareCount function for providers without count api. |
||
56 | * |
||
57 | * {@inheritdoc} |
||
58 | */ |
||
59 | public function shareCount($response) |
||
60 | { |
||
61 | return; |
||
62 | } |
||
63 | |||
64 | /** |
||
65 | * Default shareCountRequest function for providers without count api. |
||
66 | * |
||
67 | * {@inheritdoc} |
||
68 | */ |
||
69 | public function shareCountRequest() |
||
70 | { |
||
71 | return; |
||
72 | } |
||
73 | |||
74 | /** |
||
75 | * Generates a valid url. |
||
76 | * |
||
77 | * @param string $url |
||
78 | * @param array $pageParams parameters to be taken from page fields as $paramName => $paramNameInTheURL |
||
79 | * @param array $getParams extra parameters as $key => $value |
||
80 | * @param int $encoding Type of encoding used. It can be static::RFC3986 or static::RFC1738 |
||
81 | */ |
||
82 | protected function buildUrl($url, array $pageParams = null, array $getParams = array(), $encoding = self::RFC1738) |
||
83 | { |
||
84 | if ($pageParams) { |
||
85 | $getParams += $this->page->get($pageParams); |
||
86 | } |
||
87 | |||
88 | if (empty($getParams)) { |
||
89 | return $url; |
||
90 | } |
||
91 | |||
92 | if ($encoding === static::RFC1738) { |
||
93 | return $url.'?'.http_build_query($getParams); |
||
94 | } |
||
95 | |||
96 | $get = array(); |
||
97 | |||
98 | foreach ($getParams as $name => $value) { |
||
99 | $get[] = $name.'='.rawurlencode($value); |
||
100 | } |
||
101 | |||
102 | return $url.'?'.implode(ini_get('arg_separator.output'), $get); |
||
103 | } |
||
104 | |||
105 | /** |
||
106 | * Build a curl request. |
||
107 | * |
||
108 | * @param string $url |
||
109 | * @param bool|string $post |
||
110 | * @param array $headers |
||
111 | * |
||
112 | * @return resource |
||
113 | */ |
||
114 | protected static function request($url, $post = false, array $headers = null) |
||
115 | { |
||
116 | $connection = curl_init(); |
||
117 | |||
118 | curl_setopt_array($connection, array( |
||
119 | CURLOPT_URL => $url, |
||
120 | CURLOPT_RETURNTRANSFER => true, |
||
121 | CURLOPT_FOLLOWLOCATION => true, |
||
122 | CURLOPT_MAXREDIRS => 20, |
||
123 | CURLOPT_CONNECTTIMEOUT => 10, |
||
124 | CURLOPT_TIMEOUT => 10, |
||
125 | CURLOPT_SSL_VERIFYPEER => false, |
||
126 | CURLOPT_SSL_VERIFYHOST => false, |
||
127 | CURLOPT_ENCODING => '', |
||
128 | CURLOPT_AUTOREFERER => true, |
||
129 | CURLOPT_USERAGENT => 'SocialLinks PHP Library', |
||
130 | )); |
||
131 | |||
132 | if (!empty($post)) { |
||
133 | curl_setopt($connection, CURLOPT_POST, true); |
||
134 | |||
135 | if (is_string($post)) { |
||
136 | curl_setopt($connection, CURLOPT_POSTFIELDS, $post); |
||
137 | } |
||
138 | } |
||
139 | |||
140 | if (!empty($headers)) { |
||
141 | curl_setopt($connection, CURLOPT_HTTPHEADER, $headers); |
||
142 | } |
||
143 | |||
144 | return $connection; |
||
145 | } |
||
146 | |||
147 | /** |
||
148 | * Handle JSON responses. |
||
149 | * |
||
150 | * @param string $content |
||
151 | * |
||
152 | * @return array|false |
||
153 | */ |
||
154 | protected static function jsonResponse($content) |
||
155 | { |
||
156 | return json_decode($content, true); |
||
157 | } |
||
158 | |||
159 | /** |
||
160 | * Handle JSONP responses. |
||
161 | * |
||
162 | * @param string $content |
||
163 | * |
||
164 | * @return array|false |
||
165 | */ |
||
166 | protected static function jsonpResponse($content) |
||
167 | { |
||
168 | preg_match("/^\w+\((.*)\)$/", $content, $matches); |
||
169 | |||
170 | return json_decode($matches[1], true); |
||
171 | } |
||
172 | |||
173 | /** |
||
174 | * Handle HTML responses. |
||
175 | * |
||
176 | * @param string $content |
||
177 | * |
||
178 | * @return DOMDocument |
||
179 | */ |
||
180 | protected static function htmlResponse($content) |
||
181 | { |
||
182 | $errors = libxml_use_internal_errors(true); |
||
183 | $document = new DOMDocument(); |
||
184 | $document->loadHTML($content); |
||
185 | libxml_use_internal_errors($errors); |
||
186 | |||
187 | return $document; |
||
188 | } |
||
189 | } |
||
190 |
This check looks for function or method calls that always return null and whose return value is assigned to a variable.
The method
getObject()
can return nothing but null, so it makes no sense to assign that value to a variable.The reason is most likely that a function or method is imcomplete or has been reduced for debug purposes.