1
0
Mirror von https://github.com/nextcloud/server.git synchronisiert 2024-07-21 12:00:37 +02:00

Fix undefined offset

There are cases where no trusted host is specified such as when installing the instance, this lead to an undefined offset warning in the log right after installing. (when another domain than localhost or 127.0.0.1 was used)
Dieser Commit ist enthalten in:
Lukas Reschke 2015-06-22 12:28:07 +02:00
Ursprung c77e44117d
Commit 4d23e06097
2 geänderte Dateien mit 96 neuen und 8 gelöschten Zeilen

Datei anzeigen

@ -658,11 +658,6 @@ class Request implements \ArrayAccess, \Countable, IRequest {
* @return string Server host
*/
public function getServerHost() {
// FIXME: Ugly workaround that we need to get rid of
if (\OC::$CLI && defined('PHPUNIT_RUN')) {
return 'localhost';
}
// overwritehost is always trusted
$host = $this->getOverwriteHost();
if ($host !== null) {
@ -680,7 +675,11 @@ class Request implements \ArrayAccess, \Countable, IRequest {
return $host;
} else {
$trustedList = $this->config->getSystemValue('trusted_domains', []);
return $trustedList[0];
if(!empty($trustedList)) {
return $trustedList[0];
} else {
return '';
}
}
}

Datei anzeigen

@ -773,7 +773,23 @@ class RequestTest extends \Test\TestCase {
$this->assertEquals('from.forwarded.host2:8080', $request->getInsecureServerHost());
}
public function testGetServerHost() {
public function testGetServerHostWithOverwriteHost() {
$this->config
->expects($this->at(0))
->method('getSystemValue')
->with('overwritehost')
->will($this->returnValue('my.overwritten.host'));
$this->config
->expects($this->at(1))
->method('getSystemValue')
->with('overwritecondaddr')
->will($this->returnValue(''));
$this->config
->expects($this->at(2))
->method('getSystemValue')
->with('overwritehost')
->will($this->returnValue('my.overwritten.host'));
$request = new Request(
[],
$this->secureRandom,
@ -781,7 +797,80 @@ class RequestTest extends \Test\TestCase {
$this->stream
);
$this->assertEquals('localhost', $request->getServerHost());
$this->assertEquals('my.overwritten.host', $request->getServerHost());
}
public function testGetServerHostWithTrustedDomain() {
$this->config
->expects($this->at(3))
->method('getSystemValue')
->with('trusted_domains')
->will($this->returnValue(['my.trusted.host']));
$request = new Request(
[
'server' => [
'HTTP_X_FORWARDED_HOST' => 'my.trusted.host',
],
],
$this->secureRandom,
$this->config,
$this->stream
);
$this->assertEquals('my.trusted.host', $request->getServerHost());
}
public function testGetServerHostWithUntrustedDomain() {
$this->config
->expects($this->at(3))
->method('getSystemValue')
->with('trusted_domains')
->will($this->returnValue(['my.trusted.host']));
$this->config
->expects($this->at(4))
->method('getSystemValue')
->with('trusted_domains')
->will($this->returnValue(['my.trusted.host']));
$request = new Request(
[
'server' => [
'HTTP_X_FORWARDED_HOST' => 'my.untrusted.host',
],
],
$this->secureRandom,
$this->config,
$this->stream
);
$this->assertEquals('my.trusted.host', $request->getServerHost());
}
public function testGetServerHostWithNoTrustedDomain() {
$this->config
->expects($this->at(3))
->method('getSystemValue')
->with('trusted_domains')
->will($this->returnValue([]));
$this->config
->expects($this->at(4))
->method('getSystemValue')
->with('trusted_domains')
->will($this->returnValue([]));
$request = new Request(
[
'server' => [
'HTTP_X_FORWARDED_HOST' => 'my.untrusted.host',
],
],
$this->secureRandom,
$this->config,
$this->stream
);
$this->assertEquals('', $request->getServerHost());
}
public function testGetOverwriteHostDefaultNull() {