Skip to content

Commit d107097

Browse files
committed
fix(files_external/SMB): Use 'null' explicitly for no workgroup
Robin Appleman's SMB library is designed so that 'null' is to be used when no explicit workgroup is set: final class BasicAuth implements IAuth { /** @var string */ private $username; /** @var string|null */ private $workgroup; /** @var string */ private $password; //... However, it previous was loose with its checks and would still treat any falsy value (e.g. an empty string) as "not specified" when forming arguments for the various underlying utilities, such as `smbclient`. icewind/SMB@4a93467905 updated it's handling to be more strict and as such will now treat empty strings as distinct from null values for workgroups. An empty value for workgroup often doesn't make sense, unless the backend tool happens to convert it to "WORKGROUP". In the case of the `smbclient` utility, passing an empty string for the $workgroup paramters results in `-W ''` being used which is invalid syntax and so the invocation fails resulting in the user seeing an `[Icewind\SMB\Exception\ConnectionRefusedException]` error. Therefore, it is important to always pass 'null' to this constructor for $workgroup when there isn't one. Most paths in the 'files_external' app already handle this correctly, but this now altered path originally just took the raw value from the app backend and passed it as-is. Assuming this user left the "Domain" box empty in the frontend, this would be an empty string. Now the the SMB library's interface is correctly honored in that case. Fixes #58445. Signed-off-by: Christian Heimlich <chris@pcserenity.com>
1 parent a982b6c commit d107097

1 file changed

Lines changed: 1 addition & 1 deletion

File tree

  • apps/files_external/lib/Lib/Backend

apps/files_external/lib/Lib/Backend/SMB.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ public function manipulateStorageConfig(StorageConfig &$storage, ?IUser $user =
7070

7171
$smbAuth = new BasicAuth(
7272
$storage->getBackendOption('user'),
73-
$storage->getBackendOption('domain'),
73+
$storage->getBackendOption('domain') ?: null,
7474
$storage->getBackendOption('password')
7575
);
7676
} else {

0 commit comments

Comments
 (0)