Merge pull request #26705 from nextcloud/backport/26627/stable20

[stable20] update icewind/smb to 3.4.1
This commit is contained in:
Julius Härtl 2021-04-27 05:51:19 -01:00 committed by GitHub
commit 2774ae508c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 52 additions and 37 deletions

View File

@ -9,6 +9,6 @@
}, },
"require": { "require": {
"icewind/streams": "0.7.3", "icewind/streams": "0.7.3",
"icewind/smb": "3.4.0" "icewind/smb": "3.4.1"
} }
} }

View File

@ -4,20 +4,20 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "9905ed45527f669a4165a8b83b6e4141", "content-hash": "dacbb67c9e2d1d46204d5b1a7f5cebc2",
"packages": [ "packages": [
{ {
"name": "icewind/smb", "name": "icewind/smb",
"version": "v3.4.0", "version": "v3.4.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/icewind1991/SMB.git", "url": "https://github.com/icewind1991/SMB.git",
"reference": "b5c6921f2e91229c9f71556a4713b4fac91fd394" "reference": "9dba42ab2a3990de29e18cc62b0a8270aceb74e3"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/icewind1991/SMB/zipball/b5c6921f2e91229c9f71556a4713b4fac91fd394", "url": "https://api.github.com/repos/icewind1991/SMB/zipball/9dba42ab2a3990de29e18cc62b0a8270aceb74e3",
"reference": "b5c6921f2e91229c9f71556a4713b4fac91fd394", "reference": "9dba42ab2a3990de29e18cc62b0a8270aceb74e3",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -49,9 +49,9 @@
"description": "php wrapper for smbclient and libsmbclient-php", "description": "php wrapper for smbclient and libsmbclient-php",
"support": { "support": {
"issues": "https://github.com/icewind1991/SMB/issues", "issues": "https://github.com/icewind1991/SMB/issues",
"source": "https://github.com/icewind1991/SMB/tree/v3.4.0" "source": "https://github.com/icewind1991/SMB/tree/v3.4.1"
}, },
"time": "2021-03-10T14:00:37+00:00" "time": "2021-04-19T13:53:08+00:00"
}, },
{ {
"name": "icewind/streams", "name": "icewind/streams",

View File

@ -30,7 +30,7 @@ private static $installed = array (
'aliases' => 'aliases' =>
array ( array (
), ),
'reference' => '62929cc646134fbd409cfb4eacb7039d15763b96', 'reference' => '9a69b8839389f133db55a41e1c2ba4435fd50c19',
'name' => 'files_external/3rdparty', 'name' => 'files_external/3rdparty',
), ),
'versions' => 'versions' =>
@ -42,16 +42,16 @@ private static $installed = array (
'aliases' => 'aliases' =>
array ( array (
), ),
'reference' => '62929cc646134fbd409cfb4eacb7039d15763b96', 'reference' => '9a69b8839389f133db55a41e1c2ba4435fd50c19',
), ),
'icewind/smb' => 'icewind/smb' =>
array ( array (
'pretty_version' => 'v3.4.0', 'pretty_version' => 'v3.4.1',
'version' => '3.4.0.0', 'version' => '3.4.1.0',
'aliases' => 'aliases' =>
array ( array (
), ),
'reference' => 'b5c6921f2e91229c9f71556a4713b4fac91fd394', 'reference' => '9dba42ab2a3990de29e18cc62b0a8270aceb74e3',
), ),
'icewind/streams' => 'icewind/streams' =>
array ( array (

View File

@ -2,17 +2,17 @@
"packages": [ "packages": [
{ {
"name": "icewind/smb", "name": "icewind/smb",
"version": "v3.4.0", "version": "v3.4.1",
"version_normalized": "3.4.0.0", "version_normalized": "3.4.1.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/icewind1991/SMB.git", "url": "https://github.com/icewind1991/SMB.git",
"reference": "b5c6921f2e91229c9f71556a4713b4fac91fd394" "reference": "9dba42ab2a3990de29e18cc62b0a8270aceb74e3"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/icewind1991/SMB/zipball/b5c6921f2e91229c9f71556a4713b4fac91fd394", "url": "https://api.github.com/repos/icewind1991/SMB/zipball/9dba42ab2a3990de29e18cc62b0a8270aceb74e3",
"reference": "b5c6921f2e91229c9f71556a4713b4fac91fd394", "reference": "9dba42ab2a3990de29e18cc62b0a8270aceb74e3",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -25,7 +25,7 @@
"phpunit/phpunit": "^8.5|^9.3.8", "phpunit/phpunit": "^8.5|^9.3.8",
"psalm/phar": "^4.3" "psalm/phar": "^4.3"
}, },
"time": "2021-03-10T14:00:37+00:00", "time": "2021-04-19T13:53:08+00:00",
"type": "library", "type": "library",
"installation-source": "dist", "installation-source": "dist",
"autoload": { "autoload": {
@ -46,7 +46,7 @@
"description": "php wrapper for smbclient and libsmbclient-php", "description": "php wrapper for smbclient and libsmbclient-php",
"support": { "support": {
"issues": "https://github.com/icewind1991/SMB/issues", "issues": "https://github.com/icewind1991/SMB/issues",
"source": "https://github.com/icewind1991/SMB/tree/v3.4.0" "source": "https://github.com/icewind1991/SMB/tree/v3.4.1"
}, },
"install-path": "../icewind/smb" "install-path": "../icewind/smb"
}, },

View File

@ -6,7 +6,7 @@
'aliases' => 'aliases' =>
array ( array (
), ),
'reference' => '62929cc646134fbd409cfb4eacb7039d15763b96', 'reference' => '9a69b8839389f133db55a41e1c2ba4435fd50c19',
'name' => 'files_external/3rdparty', 'name' => 'files_external/3rdparty',
), ),
'versions' => 'versions' =>
@ -18,16 +18,16 @@
'aliases' => 'aliases' =>
array ( array (
), ),
'reference' => '62929cc646134fbd409cfb4eacb7039d15763b96', 'reference' => '9a69b8839389f133db55a41e1c2ba4435fd50c19',
), ),
'icewind/smb' => 'icewind/smb' =>
array ( array (
'pretty_version' => 'v3.4.0', 'pretty_version' => 'v3.4.1',
'version' => '3.4.0.0', 'version' => '3.4.1.0',
'aliases' => 'aliases' =>
array ( array (
), ),
'reference' => 'b5c6921f2e91229c9f71556a4713b4fac91fd394', 'reference' => '9dba42ab2a3990de29e18cc62b0a8270aceb74e3',
), ),
'icewind/streams' => 'icewind/streams' =>
array ( array (

View File

@ -21,6 +21,8 @@
namespace Icewind\SMB; namespace Icewind\SMB;
use Icewind\SMB\Exception\Exception;
class AnonymousAuth implements IAuth { class AnonymousAuth implements IAuth {
public function getUsername(): ?string { public function getUsername(): ?string {
return null; return null;
@ -39,6 +41,8 @@ class AnonymousAuth implements IAuth {
} }
public function setExtraSmbClientOptions($smbClientState): void { public function setExtraSmbClientOptions($smbClientState): void {
smbclient_option_set($smbClientState, SMBCLIENT_OPT_AUTO_ANONYMOUS_LOGIN, true); if (smbclient_option_set($smbClientState, SMBCLIENT_OPT_AUTO_ANONYMOUS_LOGIN, true) === false) {
throw new Exception("Failed to set smbclient options for anonymous auth");
}
} }
} }

View File

@ -21,6 +21,8 @@
namespace Icewind\SMB; namespace Icewind\SMB;
use Icewind\SMB\Exception\Exception;
/** /**
* Use existing kerberos ticket to authenticate * Use existing kerberos ticket to authenticate
*/ */
@ -42,7 +44,11 @@ class KerberosAuth implements IAuth {
} }
public function setExtraSmbClientOptions($smbClientState): void { public function setExtraSmbClientOptions($smbClientState): void {
smbclient_option_set($smbClientState, SMBCLIENT_OPT_USE_KERBEROS, true); $success = (bool)smbclient_option_set($smbClientState, SMBCLIENT_OPT_USE_KERBEROS, true);
smbclient_option_set($smbClientState, SMBCLIENT_OPT_FALLBACK_AFTER_KERBEROS, false); $success = $success && smbclient_option_set($smbClientState, SMBCLIENT_OPT_FALLBACK_AFTER_KERBEROS, false);
if (!$success) {
throw new Exception("Failed to set smbclient options for kerberos auth");
}
} }
} }

View File

@ -97,14 +97,13 @@ class NativeState {
/** @var resource $state */ /** @var resource $state */
$state = smbclient_state_new(); $state = smbclient_state_new();
$this->state = $state; $this->state = $state;
/** @psalm-suppress UnusedFunctionCall */
smbclient_option_set($this->state, SMBCLIENT_OPT_AUTO_ANONYMOUS_LOGIN, false); smbclient_option_set($this->state, SMBCLIENT_OPT_AUTO_ANONYMOUS_LOGIN, false);
/** @psalm-suppress UnusedFunctionCall */
smbclient_option_set($this->state, SMBCLIENT_OPT_TIMEOUT, $options->getTimeout() * 1000); smbclient_option_set($this->state, SMBCLIENT_OPT_TIMEOUT, $options->getTimeout() * 1000);
if (function_exists('smbclient_client_protocols')) { if (function_exists('smbclient_client_protocols')) {
$maxProtocol = $options->getMaxProtocol(); smbclient_client_protocols($this->state, $options->getMinProtocol(), $options->getMaxProtocol());
$minProtocol = $options->getMinProtocol();
smbclient_client_protocols($this->state, $minProtocol, $maxProtocol);
} }
$auth->setExtraSmbClientOptions($this->state); $auth->setExtraSmbClientOptions($this->state);
@ -357,7 +356,9 @@ class NativeState {
public function __destruct() { public function __destruct() {
if ($this->connected) { if ($this->connected) {
smbclient_state_free($this->state); if (smbclient_state_free($this->state) === false) {
throw new Exception("Failed to free smb state");
}
} }
} }
} }

View File

@ -52,7 +52,9 @@ abstract class NativeStream implements File {
* @return resource * @return resource
*/ */
protected static function wrapClass(NativeState $state, $smbStream, string $mode, string $url, string $class) { protected static function wrapClass(NativeState $state, $smbStream, string $mode, string $url, string $class) {
stream_wrapper_register('nativesmb', $class); if (stream_wrapper_register('nativesmb', $class) === false) {
throw new Exception("Failed to register stream wrapper");
}
$context = stream_context_create([ $context = stream_context_create([
'nativesmb' => [ 'nativesmb' => [
'state' => $state, 'state' => $state,
@ -61,7 +63,9 @@ abstract class NativeStream implements File {
] ]
]); ]);
$fh = fopen('nativesmb://', $mode, false, $context); $fh = fopen('nativesmb://', $mode, false, $context);
stream_wrapper_unregister('nativesmb'); if (stream_wrapper_unregister('nativesmb') === false) {
throw new Exception("Failed to unregister stream wrapper");
}
return $fh; return $fh;
} }

View File

@ -44,7 +44,7 @@ class StringBuffer {
} }
public function read(int $count): string { public function read(int $count): string {
$chunk = substr($this->buffer, $this->pos, $this->pos + $count); $chunk = substr($this->buffer, $this->pos, $count);
$this->pos += strlen($chunk); $this->pos += strlen($chunk);
return $chunk; return $chunk;
} }

View File

@ -88,7 +88,7 @@ class Server extends AbstractServer {
$shareNames = $parser->parseListShares($output); $shareNames = $parser->parseListShares($output);
$shares = []; $shares = [];
foreach ($shareNames as $name => $description) { foreach ($shareNames as $name => $_description) {
$shares[] = $this->getShare($name); $shares[] = $this->getShare($name);
} }
return $shares; return $shares;