summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Müller <thomas.mueller@tmit.eu>2015-11-18 15:27:17 +0100
committerLukas Reschke <lukas@owncloud.com>2015-11-22 16:05:50 +0100
commit358858c9e3f06560b67b69e1d15c141debb2729a (patch)
tree628d5c900c0ef3ef2882166e3229413ad75b530e
parente8661a6b563129f95f7d98322006feb9da8e2c7c (diff)
downloadnextcloud-server-358858c9e3f06560b67b69e1d15c141debb2729a.tar.gz
nextcloud-server-358858c9e3f06560b67b69e1d15c141debb2729a.zip
Fix undefined HTTP_USER_AGENT
-rw-r--r--lib/private/appframework/http/request.php3
-rw-r--r--tests/lib/appframework/http/RequestTest.php33
2 files changed, 28 insertions, 8 deletions
diff --git a/lib/private/appframework/http/request.php b/lib/private/appframework/http/request.php
index 96620838dfb..8400882b88f 100644
--- a/lib/private/appframework/http/request.php
+++ b/lib/private/appframework/http/request.php
@@ -674,6 +674,9 @@ class Request implements \ArrayAccess, \Countable, IRequest {
* @return bool true if at least one of the given agent matches, false otherwise
*/
public function isUserAgent(array $agent) {
+ if (!isset($this->server['HTTP_USER_AGENT'])) {
+ return false;
+ }
foreach ($agent as $regex) {
if (preg_match($regex, $this->server['HTTP_USER_AGENT'])) {
return true;
diff --git a/tests/lib/appframework/http/RequestTest.php b/tests/lib/appframework/http/RequestTest.php
index f628a30f1da..ab5fe154441 100644
--- a/tests/lib/appframework/http/RequestTest.php
+++ b/tests/lib/appframework/http/RequestTest.php
@@ -693,20 +693,37 @@ class RequestTest extends \Test\TestCase {
*/
public function testUserAgent($testAgent, $userAgent, $matches) {
$request = new Request(
- [
- 'server' => [
- 'HTTP_USER_AGENT' => $testAgent,
- ]
- ],
- $this->secureRandom,
- $this->config,
- $this->stream
+ [
+ 'server' => [
+ 'HTTP_USER_AGENT' => $testAgent,
+ ]
+ ],
+ $this->secureRandom,
+ $this->config,
+ $this->stream
);
$this->assertSame($matches, $request->isUserAgent($userAgent));
}
/**
+ * @dataProvider userAgentProvider
+ * @param string $testAgent
+ * @param array $userAgent
+ * @param bool $matches
+ */
+ public function testUndefinedUserAgent($testAgent, $userAgent, $matches) {
+ $request = new Request(
+ [],
+ $this->secureRandom,
+ $this->config,
+ $this->stream
+ );
+
+ $this->assertFalse($request->isUserAgent($userAgent));
+ }
+
+ /**
* @return array
*/
function userAgentProvider() {