镜像自地址
https://github.com/nextcloud/server.git
已同步 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)
这个提交包含在:
父节点
c77e44117d
当前提交
4d23e06097
@ -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 '';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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() {
|
||||
|
正在加载...
在新工单中引用
屏蔽一个用户