Skip to content

Commit fdbaef6

Browse files
committed
ensure that user and group IDs in LDAP's tables are also max 64chars
- limitation by core tables (e.g. sharing), IDs are always 64chars - when longer group IDs were requested they are hashed (does not affect displaynames) Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
1 parent 62a814f commit fdbaef6

File tree

11 files changed

+404
-35
lines changed

11 files changed

+404
-35
lines changed

apps/user_ldap/appinfo/info.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
A user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation.
1010

1111
</description>
12-
<version>1.12.0</version>
12+
<version>1.12.1</version>
1313
<licence>agpl</licence>
1414
<author>Dominik Schmidt</author>
1515
<author>Arthur Schiwon</author>

apps/user_ldap/composer/composer/ClassLoader.php

Lines changed: 102 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -42,30 +42,75 @@
4242
*/
4343
class ClassLoader
4444
{
45+
/** @var ?string */
4546
private $vendorDir;
4647

4748
// PSR-4
49+
/**
50+
* @var array[]
51+
* @psalm-var array<string, array<string, int>>
52+
*/
4853
private $prefixLengthsPsr4 = array();
54+
/**
55+
* @var array[]
56+
* @psalm-var array<string, array<int, string>>
57+
*/
4958
private $prefixDirsPsr4 = array();
59+
/**
60+
* @var array[]
61+
* @psalm-var array<string, string>
62+
*/
5063
private $fallbackDirsPsr4 = array();
5164

5265
// PSR-0
66+
/**
67+
* @var array[]
68+
* @psalm-var array<string, array<string, string[]>>
69+
*/
5370
private $prefixesPsr0 = array();
71+
/**
72+
* @var array[]
73+
* @psalm-var array<string, string>
74+
*/
5475
private $fallbackDirsPsr0 = array();
5576

77+
/** @var bool */
5678
private $useIncludePath = false;
79+
80+
/**
81+
* @var string[]
82+
* @psalm-var array<string, string>
83+
*/
5784
private $classMap = array();
85+
86+
/** @var bool */
5887
private $classMapAuthoritative = false;
88+
89+
/**
90+
* @var bool[]
91+
* @psalm-var array<string, bool>
92+
*/
5993
private $missingClasses = array();
94+
95+
/** @var ?string */
6096
private $apcuPrefix;
6197

98+
/**
99+
* @var self[]
100+
*/
62101
private static $registeredLoaders = array();
63102

103+
/**
104+
* @param ?string $vendorDir
105+
*/
64106
public function __construct($vendorDir = null)
65107
{
66108
$this->vendorDir = $vendorDir;
67109
}
68110

111+
/**
112+
* @return string[]
113+
*/
69114
public function getPrefixes()
70115
{
71116
if (!empty($this->prefixesPsr0)) {
@@ -75,28 +120,47 @@ public function getPrefixes()
75120
return array();
76121
}
77122

123+
/**
124+
* @return array[]
125+
* @psalm-return array<string, array<int, string>>
126+
*/
78127
public function getPrefixesPsr4()
79128
{
80129
return $this->prefixDirsPsr4;
81130
}
82131

132+
/**
133+
* @return array[]
134+
* @psalm-return array<string, string>
135+
*/
83136
public function getFallbackDirs()
84137
{
85138
return $this->fallbackDirsPsr0;
86139
}
87140

141+
/**
142+
* @return array[]
143+
* @psalm-return array<string, string>
144+
*/
88145
public function getFallbackDirsPsr4()
89146
{
90147
return $this->fallbackDirsPsr4;
91148
}
92149

150+
/**
151+
* @return string[] Array of classname => path
152+
* @psalm-var array<string, string>
153+
*/
93154
public function getClassMap()
94155
{
95156
return $this->classMap;
96157
}
97158

98159
/**
99-
* @param array $classMap Class to filename map
160+
* @param string[] $classMap Class to filename map
161+
* @psalm-param array<string, string> $classMap
162+
*
163+
* @return void
100164
*/
101165
public function addClassMap(array $classMap)
102166
{
@@ -111,9 +175,11 @@ public function addClassMap(array $classMap)
111175
* Registers a set of PSR-0 directories for a given prefix, either
112176
* appending or prepending to the ones previously set for this prefix.
113177
*
114-
* @param string $prefix The prefix
115-
* @param array|string $paths The PSR-0 root directories
116-
* @param bool $prepend Whether to prepend the directories
178+
* @param string $prefix The prefix
179+
* @param string[]|string $paths The PSR-0 root directories
180+
* @param bool $prepend Whether to prepend the directories
181+
*
182+
* @return void
117183
*/
118184
public function add($prefix, $paths, $prepend = false)
119185
{
@@ -156,11 +222,13 @@ public function add($prefix, $paths, $prepend = false)
156222
* Registers a set of PSR-4 directories for a given namespace, either
157223
* appending or prepending to the ones previously set for this namespace.
158224
*
159-
* @param string $prefix The prefix/namespace, with trailing '\\'
160-
* @param array|string $paths The PSR-4 base directories
161-
* @param bool $prepend Whether to prepend the directories
225+
* @param string $prefix The prefix/namespace, with trailing '\\'
226+
* @param string[]|string $paths The PSR-4 base directories
227+
* @param bool $prepend Whether to prepend the directories
162228
*
163229
* @throws \InvalidArgumentException
230+
*
231+
* @return void
164232
*/
165233
public function addPsr4($prefix, $paths, $prepend = false)
166234
{
@@ -204,8 +272,10 @@ public function addPsr4($prefix, $paths, $prepend = false)
204272
* Registers a set of PSR-0 directories for a given prefix,
205273
* replacing any others previously set for this prefix.
206274
*
207-
* @param string $prefix The prefix
208-
* @param array|string $paths The PSR-0 base directories
275+
* @param string $prefix The prefix
276+
* @param string[]|string $paths The PSR-0 base directories
277+
*
278+
* @return void
209279
*/
210280
public function set($prefix, $paths)
211281
{
@@ -220,10 +290,12 @@ public function set($prefix, $paths)
220290
* Registers a set of PSR-4 directories for a given namespace,
221291
* replacing any others previously set for this namespace.
222292
*
223-
* @param string $prefix The prefix/namespace, with trailing '\\'
224-
* @param array|string $paths The PSR-4 base directories
293+
* @param string $prefix The prefix/namespace, with trailing '\\'
294+
* @param string[]|string $paths The PSR-4 base directories
225295
*
226296
* @throws \InvalidArgumentException
297+
*
298+
* @return void
227299
*/
228300
public function setPsr4($prefix, $paths)
229301
{
@@ -243,6 +315,8 @@ public function setPsr4($prefix, $paths)
243315
* Turns on searching the include path for class files.
244316
*
245317
* @param bool $useIncludePath
318+
*
319+
* @return void
246320
*/
247321
public function setUseIncludePath($useIncludePath)
248322
{
@@ -265,6 +339,8 @@ public function getUseIncludePath()
265339
* that have not been registered with the class map.
266340
*
267341
* @param bool $classMapAuthoritative
342+
*
343+
* @return void
268344
*/
269345
public function setClassMapAuthoritative($classMapAuthoritative)
270346
{
@@ -285,6 +361,8 @@ public function isClassMapAuthoritative()
285361
* APCu prefix to use to cache found/not-found classes, if the extension is enabled.
286362
*
287363
* @param string|null $apcuPrefix
364+
*
365+
* @return void
288366
*/
289367
public function setApcuPrefix($apcuPrefix)
290368
{
@@ -305,6 +383,8 @@ public function getApcuPrefix()
305383
* Registers this instance as an autoloader.
306384
*
307385
* @param bool $prepend Whether to prepend the autoloader or not
386+
*
387+
* @return void
308388
*/
309389
public function register($prepend = false)
310390
{
@@ -324,6 +404,8 @@ public function register($prepend = false)
324404

325405
/**
326406
* Unregisters this instance as an autoloader.
407+
*
408+
* @return void
327409
*/
328410
public function unregister()
329411
{
@@ -403,6 +485,11 @@ public static function getRegisteredLoaders()
403485
return self::$registeredLoaders;
404486
}
405487

488+
/**
489+
* @param string $class
490+
* @param string $ext
491+
* @return string|false
492+
*/
406493
private function findFileWithExtension($class, $ext)
407494
{
408495
// PSR-4 lookup
@@ -474,6 +561,10 @@ private function findFileWithExtension($class, $ext)
474561
* Scope isolated include.
475562
*
476563
* Prevents access to $this/self from included files.
564+
*
565+
* @param string $file
566+
* @return void
567+
* @private
477568
*/
478569
function includeFile($file)
479570
{

apps/user_ldap/composer/composer/InstalledVersions.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
*
2121
* See also https://getcomposer.org/doc/07-runtime.md#installed-versions
2222
*
23-
* To require it's presence, you can require `composer-runtime-api ^2.0`
23+
* To require its presence, you can require `composer-runtime-api ^2.0`
2424
*/
2525
class InstalledVersions
2626
{
@@ -228,7 +228,7 @@ public static function getInstallPath($packageName)
228228

229229
/**
230230
* @return array
231-
* @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}
231+
* @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}
232232
*/
233233
public static function getRootPackage()
234234
{
@@ -242,7 +242,7 @@ public static function getRootPackage()
242242
*
243243
* @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
244244
* @return array[]
245-
* @psalm-return array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string}>}
245+
* @psalm-return array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}
246246
*/
247247
public static function getRawData()
248248
{
@@ -265,7 +265,7 @@ public static function getRawData()
265265
* Returns the raw data of all installed.php which are currently loaded for custom implementations
266266
*
267267
* @return array[]
268-
* @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string}>}>
268+
* @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
269269
*/
270270
public static function getAllRawData()
271271
{
@@ -288,7 +288,7 @@ public static function getAllRawData()
288288
* @param array[] $data A vendor/composer/installed.php data set
289289
* @return void
290290
*
291-
* @psalm-param array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string}>} $data
291+
* @psalm-param array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>} $data
292292
*/
293293
public static function reload($data)
294294
{
@@ -298,7 +298,7 @@ public static function reload($data)
298298

299299
/**
300300
* @return array[]
301-
* @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string}>}>
301+
* @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
302302
*/
303303
private static function getInstalled()
304304
{

apps/user_ldap/composer/composer/autoload_classmap.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
'OCA\\User_LDAP\\Migration\\UUIDFixUser' => $baseDir . '/../lib/Migration/UUIDFixUser.php',
6262
'OCA\\User_LDAP\\Migration\\UnsetDefaultProvider' => $baseDir . '/../lib/Migration/UnsetDefaultProvider.php',
6363
'OCA\\User_LDAP\\Migration\\Version1010Date20200630192842' => $baseDir . '/../lib/Migration/Version1010Date20200630192842.php',
64+
'OCA\\User_LDAP\\Migration\\Version1120Date20210917155206' => $baseDir . '/../lib/Migration/Version1120Date20210917155206.php',
6465
'OCA\\User_LDAP\\Notification\\Notifier' => $baseDir . '/../lib/Notification/Notifier.php',
6566
'OCA\\User_LDAP\\PagedResults\\IAdapter' => $baseDir . '/../lib/PagedResults/IAdapter.php',
6667
'OCA\\User_LDAP\\PagedResults\\Php73' => $baseDir . '/../lib/PagedResults/Php73.php',

apps/user_ldap/composer/composer/autoload_static.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ class ComposerStaticInitUser_LDAP
7676
'OCA\\User_LDAP\\Migration\\UUIDFixUser' => __DIR__ . '/..' . '/../lib/Migration/UUIDFixUser.php',
7777
'OCA\\User_LDAP\\Migration\\UnsetDefaultProvider' => __DIR__ . '/..' . '/../lib/Migration/UnsetDefaultProvider.php',
7878
'OCA\\User_LDAP\\Migration\\Version1010Date20200630192842' => __DIR__ . '/..' . '/../lib/Migration/Version1010Date20200630192842.php',
79+
'OCA\\User_LDAP\\Migration\\Version1120Date20210917155206' => __DIR__ . '/..' . '/../lib/Migration/Version1120Date20210917155206.php',
7980
'OCA\\User_LDAP\\Notification\\Notifier' => __DIR__ . '/..' . '/../lib/Notification/Notifier.php',
8081
'OCA\\User_LDAP\\PagedResults\\IAdapter' => __DIR__ . '/..' . '/../lib/PagedResults/IAdapter.php',
8182
'OCA\\User_LDAP\\PagedResults\\Php73' => __DIR__ . '/..' . '/../lib/PagedResults/Php73.php',

apps/user_ldap/composer/composer/installed.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
'type' => 'library',
66
'install_path' => __DIR__ . '/../',
77
'aliases' => array(),
8-
'reference' => 'fa56c13484afa1baf908b93ed5b6990c6a0e9ad6',
8+
'reference' => '62a814f4fbdec485e97e6b55a8320a02ced488bb',
99
'name' => '__root__',
1010
'dev' => false,
1111
),
@@ -16,7 +16,7 @@
1616
'type' => 'library',
1717
'install_path' => __DIR__ . '/../',
1818
'aliases' => array(),
19-
'reference' => 'fa56c13484afa1baf908b93ed5b6990c6a0e9ad6',
19+
'reference' => '62a814f4fbdec485e97e6b55a8320a02ced488bb',
2020
'dev_requirement' => false,
2121
),
2222
),

0 commit comments

Comments
 (0)