-
Notifications
You must be signed in to change notification settings - Fork 242
Shares Jail PROPFIND returns different File IDs for the same item #9933
Description
Describe the bug
A folder shared from one user to another is identified by different File IDs in the Share Jail, depending on the location targeted by the PROPFIND.
Steps to reproduce
- Share folder
Universefrom user A to user B - As user B, perform a
PROPFINDon the Shares Jail root folder. - As user B, perform a
PROPFINDon theUniversefolder in the Shares Jail. - Compare
<oc:id>s returned for theUniversefolder item.
Expected behavior
Only one File ID is returned for an item in the Shares Jail, irrespective of the PROPFIND path and depth used.
Actual behavior
The File ID is different depending on the (Shares Jail) path targeted by the PROPFIND.
Setup
This was reproduced with demo.owncloud.com.
Examples
PROPFIND on / inside the Shares Jail with Depth: 1:
(request path: /dav/spaces/a0ca6a90-a365-4782-871e-d44447bbc668$a0ca6a90-a365-4782-871e-d44447bbc668/)
Response:
Details
<?xml version="1.0"?>
<d:multistatus xmlns:s="http://sabredav.org/ns" xmlns:d="DAV:" xmlns:oc="http://owncloud.org/ns">
<d:response>
<d:href>/dav/spaces/a0ca6a90-a365-4782-871e-d44447bbc668$a0ca6a90-a365-4782-871e-d44447bbc668/</d:href>
<d:propstat>
<d:prop>
<d:resourcetype>
<d:collection/>
</d:resourcetype>
<d:getlastmodified>Wed, 28 Aug 2024 20:18:11 GMT</d:getlastmodified>
<d:getetag>"abfb1a5bbbd08eb8f253e37c51fef1f7"</d:getetag>
<oc:id>a0ca6a90-a365-4782-871e-d44447bbc668$a0ca6a90-a365-4782-871e-d44447bbc668!a0ca6a90-a365-4782-871e-d44447bbc668</oc:id>
<oc:size>0</oc:size>
<oc:permissions/>
<oc:favorite>0</oc:favorite>
<oc:owner-id>katherine</oc:owner-id>
<oc:owner-display-name>Katherine Johnson</oc:owner-display-name>
</d:prop>
<d:status>HTTP/1.1 200 OK</d:status>
</d:propstat>
</d:response>
<d:response>
<d:href>/dav/spaces/a0ca6a90-a365-4782-871e-d44447bbc668$a0ca6a90-a365-4782-871e-d44447bbc668/Universe/</d:href>
<d:propstat>
<d:prop>
<d:resourcetype>
<d:collection/>
</d:resourcetype>
<d:getlastmodified>Wed, 28 Aug 2024 20:18:11 GMT</d:getlastmodified>
<d:getetag>"abfb1a5bbbd08eb8f253e37c51fef1f7"</d:getetag>
<oc:id>a0ca6a90-a365-4782-871e-d44447bbc668$a0ca6a90-a365-4782-871e-d44447bbc668!166d1210-cdb9-50ab-9f1e-ecb9ef12a304:4c510ada-c86b-4815-8820-42cdf82c3d51:3ef59385-34ba-4055-b705-f4f05f1388a4</oc:id>
<oc:size>0</oc:size>
<oc:permissions>SDNVCK</oc:permissions>
<oc:favorite>0</oc:favorite>
<oc:share-types>
<oc:share-type>0</oc:share-type>
</oc:share-types>
</d:prop>
<d:status>HTTP/1.1 200 OK</d:status>
</d:propstat>
</d:response>
<d:response>
<d:href>/dav/spaces/a0ca6a90-a365-4782-871e-d44447bbc668$a0ca6a90-a365-4782-871e-d44447bbc668/Theory/</d:href>
<d:propstat>
<d:prop>
<d:resourcetype>
<d:collection/>
</d:resourcetype>
<d:getlastmodified>Wed, 28 Aug 2024 20:10:22 GMT</d:getlastmodified>
<d:getetag>"202a52840b4f000e6b7997c6d9e025a9"</d:getetag>
<oc:id>a0ca6a90-a365-4782-871e-d44447bbc668$a0ca6a90-a365-4782-871e-d44447bbc668!166d1210-cdb9-50ab-9f1e-ecb9ef12a304:4c510ada-c86b-4815-8820-42cdf82c3d51:fdb56a22-9792-41b1-8538-ad66f31c67fb</oc:id>
<oc:size>2567402</oc:size>
<oc:permissions>SDNVCK</oc:permissions>
<oc:favorite>0</oc:favorite>
<oc:share-types>
<oc:share-type>0</oc:share-type>
</oc:share-types>
</d:prop>
<d:status>HTTP/1.1 200 OK</d:status>
</d:propstat>
</d:response>
</d:multistatus>Notice how the response contains the following <oc:id> for /Universe/:
a0ca6a90-a365-4782-871e-d44447bbc668$a0ca6a90-a365-4782-871e-d44447bbc668!166d1210-cdb9-50ab-9f1e-ecb9ef12a304:4c510ada-c86b-4815-8820-42cdf82c3d51:3ef59385-34ba-4055-b705-f4f05f1388a4
PROPFIND on /Universe/ inside the Shares Jail with Depth: 1:
(request path: /dav/spaces/a0ca6a90-a365-4782-871e-d44447bbc668$a0ca6a90-a365-4782-871e-d44447bbc668/Universe/)
Response:
Details
<?xml version="1.0"?>
<d:multistatus xmlns:s="http://sabredav.org/ns" xmlns:d="DAV:" xmlns:oc="http://owncloud.org/ns">
<d:response>
<d:href>/dav/spaces/a0ca6a90-a365-4782-871e-d44447bbc668$a0ca6a90-a365-4782-871e-d44447bbc668/Universe/</d:href>
<d:propstat>
<d:prop>
<d:resourcetype>
<d:collection/>
</d:resourcetype>
<d:getlastmodified>Wed, 28 Aug 2024 20:19:07 GMT</d:getlastmodified>
<d:getetag>"78306138f800b46e89628999cf69d532"</d:getetag>
<oc:id>166d1210-cdb9-50ab-9f1e-ecb9ef12a304$4c510ada-c86b-4815-8820-42cdf82c3d51!17634536-719e-47c4-bf8b-e8b97188259a</oc:id>
<oc:size>993045</oc:size>
<oc:permissions>SDNVCK</oc:permissions>
<oc:favorite>0</oc:favorite>
<oc:share-types>
<oc:share-type>0</oc:share-type>
</oc:share-types>
</d:prop>
<d:status>HTTP/1.1 200 OK</d:status>
</d:propstat>
</d:response>
<d:response>
<d:href>/dav/spaces/a0ca6a90-a365-4782-871e-d44447bbc668$a0ca6a90-a365-4782-871e-d44447bbc668/Universe/IMG_0004.jpeg</d:href>
<d:propstat>
<d:prop>
<d:resourcetype/>
<d:getlastmodified>Wed, 08 Aug 2012 21:29:49 GMT</d:getlastmodified>
<d:getcontentlength>993045</d:getcontentlength>
<d:getcontenttype>image/jpeg</d:getcontenttype>
<d:getetag>"f64ca9ad4b5bbf0a20d091beee2c4473"</d:getetag>
<oc:id>166d1210-cdb9-50ab-9f1e-ecb9ef12a304$4c510ada-c86b-4815-8820-42cdf82c3d51!d43e8715-6fd7-4736-9790-24f274987de7</oc:id>
<oc:size>993045</oc:size>
<oc:permissions>DNVW</oc:permissions>
<oc:favorite>0</oc:favorite>
</d:prop>
<d:status>HTTP/1.1 200 OK</d:status>
</d:propstat>
</d:response>
</d:multistatus>Notice how the response contains the following <oc:id> for /Universe/:
166d1210-cdb9-50ab-9f1e-ecb9ef12a304$4c510ada-c86b-4815-8820-42cdf82c3d51!17634536-719e-47c4-bf8b-e8b97188259a
Additional context
Different File IDs for the same item cause issues in the iOS app, which uses them to track the item's location and lifecycle:
- disappearing folder contents: https://github.com/owncloud/enterprise/issues/6842
- breaks the internal chain of item IDs, so items inside shared folders erroneously are seen as "root" shared items themselves, leading to side effects like the wrong actions being shown to the user. F.ex.
Unshare(which of course fails) is shown, butDelete(which would work and be useful) is not.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status