27214 Commits

Author SHA1 Message Date
Nextcloud bot 1940565e5e fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-06-29 00:22:38 +00:00
Nextcloud bot 6dc9f5e4a5 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-06-28 00:22:25 +00:00
Nextcloud bot b9899e6a43 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-06-27 00:22:38 +00:00
Andy Scherzinger a8c182718b Merge pull request #61550 from nextcloud/backport/60898/stable34
[stable34] fix: Make the IProvideUserSecretBackend usable
2026-06-26 19:00:03 +02:00
Andy Scherzinger 6c7a5a40d8 Merge pull request #61557 from nextcloud/backport/61532/stable34
[stable34] perf(log): normalize log data only when logging
2026-06-26 17:35:07 +02:00
Andy Scherzinger eb8bf83e4d Merge pull request #61571 from nextcloud/backport/61534/stable34
[stable34] fix(Collaborators): Fix matching emails to remote users if no remote results are present
2026-06-26 17:33:18 +02:00
Oleksander Piskun c08b4ca1e6 fix(maintenance): allow AppAPI to serve requests during maintenance mode
Signed-off-by: Oleksander Piskun <oleksandr2088@icloud.com>
2026-06-26 13:44:44 +00:00
Nextcloud bot 4ea38c2cf9 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-06-26 00:22:40 +00:00
Nextcloud bot b403f3b2df fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-06-25 10:34:19 +00:00
provokateurin a751655d98 fix(Collaborators): Fix matching emails to remote users if no remote results are present
Signed-off-by: provokateurin <kate@provokateurin.de>
2026-06-24 13:32:22 +00:00
Nextcloud bot 4d5cf23c76 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-06-24 00:29:35 +00:00
Salvatore Martire 00b4f19ffd perf(log): normalize log data only when logging
Signed-off-by: Salvatore Martire <4652631+salmart-dev@users.noreply.github.com>
2026-06-23 20:30:24 +00:00
Carl Schwan 3771579eaf fix: Make the IProvideUserSecretBackend usable
When implementing this for user_saml, I noticed that we do need to make
the return value nullable as otherwise there are no way for this feature
to be optional for the admin.

Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-06-23 15:15:16 +00:00
Nextcloud bot c6ef168134 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-06-22 00:23:03 +00:00
Nextcloud bot 8203f9fe3a fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-06-20 00:22:58 +00:00
Nextcloud bot cdfc0e6a0d fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-06-18 00:23:08 +00:00
Andy Scherzinger 15db395016 Merge pull request #61105 from nextcloud/backport/60735/stable34
[stable34] fix(security): don't propagate ValueError from Crypto::decrypt() fallback
2026-06-17 23:01:58 +02:00
Andy Scherzinger 495f3082a0 Merge pull request #60983 from nextcloud/backport/60884/stable34
[stable34] fix(TaskProcessing): restrict allowed_classes in Manager cache deserialization
2026-06-17 23:00:01 +02:00
El Mehdi Abenhazou d878ec67fa fix(TaskProcessing): restrict allowed_classes in Manager cache deserialization
The availableTaskTypes cache stores serialized arrays containing
ShapeDescriptor objects, ShapeEnumValue objects, and EShapeType enum
values. The unserialize() call did not restrict which classes could
be instantiated.

Restrict deserialization to the three known types:
- OCP\TaskProcessing\ShapeDescriptor
- OCP\TaskProcessing\ShapeEnumValue
- OCP\TaskProcessing\EShapeType

This prevents PHP Object Injection if an attacker gains write access
to the distributed cache backend.

Signed-off-by: El Mehdi Abenhazou <mehdiananas007@gmail.com>
2026-06-17 19:11:28 +02:00
XananasX7 52d371cb70 fix(TaskProcessing): add allowed_classes to unserialize() in Manager cache
The availableTaskTypes cache stores serialized arrays containing
ShapeDescriptor objects, ShapeEnumValue objects, and EShapeType enum
values. The unserialize() call did not restrict which classes could
be instantiated.

Restrict deserialization to the three known types:
- OCP\TaskProcessing\ShapeDescriptor
- OCP\TaskProcessing\ShapeEnumValue
- OCP\TaskProcessing\EShapeType

This prevents PHP Object Injection if an attacker gains write access
to the distributed cache backend (e.g., a Redis instance without
authentication or with weak ACLs), which is a known real-world attack
vector in shared hosting and container environments.
2026-06-17 19:11:28 +02:00
copilot-swe-agent[bot] 86b4dc6ae1 fix(taskprocessing): correct Task::COLUMNS to Task::$columns in claimWithSkipLocked 2026-06-17 19:00:53 +02:00
Yoan Bozhilov 5804b14f06 fix(taskprocessing): @since 35.0.0 for claimNextScheduledTask
The new public IManager::claimNextScheduledTask lands in master (35.0.0),
not 34.0.0. Addresses review feedback.

Signed-off-by: Yoan Bozhilov <bygadd@gmail.com>
Assisted-by: Claude Code:claude-opus-4-8
2026-06-17 19:00:53 +02:00
Yoan Bozhilov d10fe955a7 docs(taskprocessing): document lockTask semantic change
Per review feedback: note in the lockTask docblock that the guard changed from
`status != RUNNING` to `status = SCHEDULED`, and that callers must now treat a
0 return as "the task is no longer claimable" rather than assuming success.

Signed-off-by: Yoan Bozhilov <bygadd@gmail.com>
Assisted-by: Claude Code:claude-opus-4-8
2026-06-17 19:00:53 +02:00
Yoan Bozhilov 3f3f9c6464 fix(taskprocessing): guard lockTask on scheduled, record started_at, Oracle fallback
Address review feedback (@marcelklehr, Copilot):
- lockTask claims only SCHEDULED tasks (was status != RUNNING) and stamps
  started_at in the same atomic UPDATE, so a finished task cannot be re-claimed
  and the external-provider claim path records started_at as well.
- claimWithBoundedRetry re-reads after lockTask instead of a follow-up UPDATE.
- Oracle joins SQLite on the bounded-retry fallback: Oracle cannot combine a
  row-limiting clause with FOR UPDATE (ORA-02014), which failed the claim tests
  on Oracle CI.
- Reword the worker docblock/comments to "prefer oldest available" (parallel
  SKIP LOCKED does not guarantee a strict global order).
- Add a regression test that lockTask does not resurrect a finished task.

Signed-off-by: Yoan Bozhilov <bygadd@gmail.com>
Assisted-by: Claude Code:claude-opus-4-8
2026-06-17 19:00:53 +02:00
Marcel Klehr 440d8e7a27 fix: Address review comments
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2026-06-17 19:00:53 +02:00
Yoan Bozhilov aa5f45cecd fix(taskprocessing): claim tasks atomically with SKIP LOCKED + composite index
Replace the worker retry/ignore-list claim-loop with a single atomic
SELECT ... FOR UPDATE SKIP LOCKED claim (SQLite bounded-retry fallback),
preserving the no-duplicate guarantee while removing the thundering-herd
contention that throttled backlog draining. Add a (status,type,last_updated)
index via the table-creating migration + db:add-missing-indices listener.

Signed-off-by: Yoan Bozhilov <bygadd@gmail.com>
Assisted-by: Claude Code:claude-opus-4-8
2026-06-17 19:00:53 +02:00
Benjamin Gaussorgues a5e86fc45d fix: prevent editing delegated admins
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2026-06-17 09:28:16 +00:00
Arthur Schiwon add05cc785 fix: ensure file names are string-typed
- `$child` was used as an array key earlier. If they are numeric, they
  are automatically converted to ints, leading to type issues later.

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2026-06-17 05:25:48 +00:00
Andy Scherzinger 7efb33e688 Merge pull request #61072 from nextcloud/backport/60453/stable34
[stable34] fix(dav): finalize upload metadata before post-write hooks
2026-06-17 07:14:05 +02:00
Andy Scherzinger 7d4b31c9ff Merge pull request #61203 from nextcloud/backport/59979/stable34
[stable34] fix(repair): restrict unserialize() in RemoveBrokenProperties
2026-06-17 07:12:07 +02:00
Nextcloud bot 87a4747ad3 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-06-17 00:23:05 +00:00
Cristian Scheid 57c0c8facc fix(team-manager): ensure team resources are only retrived for members
Signed-off-by: Cristian Scheid <cristianscheid@gmail.com>
2026-06-16 18:35:19 +00:00
Andy Scherzinger 4de1401ccb Merge pull request #61337 from nextcloud/backport/61201/stable34
[stable34] Add OCM Notification Received Event
2026-06-16 20:29:36 +02:00
Andy Scherzinger f0486b9e9c Merge pull request #61341 from nextcloud/backport/61150/stable34
[stable34] Speedup tests execution
2026-06-16 20:20:21 +02:00
Andy Scherzinger de063cf40a Merge pull request #61342 from nextcloud/backport/61322/stable34
[stable34] fix: Do not set last-password-confirm for apptoken sessions
2026-06-16 20:16:39 +02:00
Côme Chilliet de970b65fe fix: Do not set last-password-confirm for apptoken sessions
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-06-16 14:28:20 +00:00
Carl Schwan 8a270ee825 perf: Test chunking with a lower amount of entries
Use a lower array_chunk values when running the code in the tests for
the comment manager.

Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-06-16 14:21:04 +00:00
niv 42773bf9e8 fix: trim duplicate search results for external share
Signed-off-by: Maksim Sukharev <antreesy.web@gmail.com>
2026-06-16 14:13:56 +00:00
Micke Nordin c1c43776c3 feat(OCM): Add event for received notifications
OCM is standardizing and expanding the use of notifications and having
an event for acting on in apps will be very useful.

Signed-off-by: Micke Nordin <kano@sunet.se>
2026-06-16 13:22:06 +00:00
Eli Peter c919537629 fix(repair): restrict unserialize() in RemoveBrokenProperties
RemoveBrokenProperties::run() calls unserialize() on the property value column without restricting allowed_classes. The result is only compared against false to identify broken rows, so no class instantiation is needed. As written though, magic methods (__wakeup/__destruct) on any class referenced by the serialized payload still execute.

The runtime decoder for the same column already restricts deserialization. See apps/dav/lib/DAV/CustomPropertiesBackend.php:675-678, which passes ['allowed_classes' => self::ALLOWED_SERIALIZED_CLASSES]. This change applies the same hardening to the repair step. It uses ['allowed_classes' => false] since the unserialized value is never used, only its truthiness is checked.

No behavior change for valid or broken rows.  

Signed-off-by: Eli Peter <54954007+elicpeter@users.noreply.github.com>
2026-06-16 13:12:55 +02:00
Andy Scherzinger 9882418ba8 Merge pull request #61249 from nextcloud/backport/60972/stable34
[stable34] Job run history cleanup
2026-06-16 13:11:25 +02:00
Louis 9d6932f9c8 Merge pull request #61305 from nextcloud/backport/61295/stable34
[stable34] fix: Use token expiration for ephemeral sessions
2026-06-16 09:38:45 +02:00
Nextcloud bot 2d431eb9d0 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-06-16 00:23:14 +00:00
Côme Chilliet 612856509e fix: Use token expiration for ephemeral sessions
This simplifies the code a lot.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-06-15 16:48:03 +02:00
Andy Scherzinger 452a9c2819 Merge pull request #61258 from nextcloud/backport/61245/stable34
[stable34] fix: Fix PHP Warning foreach() argument must be of type array|object, null given
2026-06-15 16:17:27 +02:00
Nextcloud bot fb2a7e0d15 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-06-15 00:23:28 +00:00
Nextcloud bot 9ce1cebb39 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-06-14 00:22:52 +00:00
Nextcloud bot b06f3c14b3 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-06-13 00:24:28 +00:00
Benjamin Gaussorgues f875e3852a feat(jobs): clean old job runs
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2026-06-12 19:40:17 +02:00
Benjamin Gaussorgues a570d6dc5d feat(snowflake): allows to generate Snowflake IDs matching a timestamp
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2026-06-12 19:40:16 +02:00