Skip to content

fix(document-storage-provider): permission denial#17270

Open
alperozturk96 wants to merge 5 commits into
masterfrom
fix/permission-denial
Open

fix(document-storage-provider): permission denial#17270
alperozturk96 wants to merge 5 commits into
masterfrom
fix/permission-denial

Conversation

@alperozturk96

@alperozturk96 alperozturk96 commented Jul 2, 2026

Copy link
Copy Markdown
Collaborator

Issue: #17258

caller identity needs to be cleared before trying to access URI

Screenshot 2026-07-02 at 08 58 42
E  Writing exception to parcel

java.lang.SecurityException: Permission Denial: reading
com.owncloud.android.providers.FileContentProvider
URI: content://org.nextcloud/capabilities
from pid=7734, uid=10069
requires false, or grantUriPermission()

    at android.content.ContentProvider.enforceReadPermissionInner(ContentProvider.java:1028)
    at android.content.ContentProvider$Transport.enforceReadPermission(ContentProvider.java:823)
    at android.content.ContentProvider$Transport.query(ContentProvider.java:257)
    at android.content.ContentResolver.query(ContentResolver.java:1231)
    at android.content.ContentResolver.query(ContentResolver.java:1163)
    at android.content.ContentResolver.query(ContentResolver.java:1119)
    at com.owncloud.android.datamodel.FileDataStorageManager.getCapabilityCursorForAccount(FileDataStorageManager.java:2437)
    at com.owncloud.android.datamodel.FileDataStorageManager.getCapability(FileDataStorageManager.java:2474)
    at com.owncloud.android.datamodel.FileDataStorageManager.getCapability(FileDataStorageManager.java:2468)
    at com.owncloud.android.datamodel.FileDataStorageManager.getE2EEVersionObject(FileDataStorageManager.java:2461)
    at com.owncloud.android.operations.RefreshFolderOperation.synchronizeData(RefreshFolderOperation.java:552)
    at com.owncloud.android.operations.RefreshFolderOperation.fetchAndSyncRemoteFolder(RefreshFolderOperation.java:464)
    at com.owncloud.android.operations.RefreshFolderOperation.run(RefreshFolderOperation.java:275)
    at com.owncloud.android.lib.common.operations.RemoteOperation.execute(RemoteOperation.java:193)
    at com.owncloud.android.providers.DocumentsStorageProvider.createFile(DocumentsStorageProvider.java:641)
    at com.owncloud.android.providers.DocumentsStorageProvider.createDocument(DocumentsStorageProvider.java:539)
    at android.provider.DocumentsProvider.callUnchecked(DocumentsProvider.java:1153)
    at android.provider.DocumentsProvider.call(DocumentsProvider.java:1091)
    at android.content.ContentProvider.call(ContentProvider.java:2709)
    at android.content.ContentProvider$Transport.call(ContentProvider.java:638)
    at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:307)
    at android.os.Binder.execTransactInternal(Binder.java:1421)
    at android.os.Binder.execTransact(Binder.java:1365)

Signed-off-by: alperozturk96 <alper_ozturk@proton.me>
@alperozturk96 alperozturk96 force-pushed the fix/permission-denial branch from 8f8d5c5 to e8d2393 Compare July 13, 2026 06:26
Signed-off-by: alperozturk96 <alper_ozturk@proton.me>
Signed-off-by: alperozturk96 <alper_ozturk@proton.me>
@nextcloud nextcloud deleted a comment from github-actions Bot Jul 13, 2026
@nextcloud nextcloud deleted a comment from github-actions Bot Jul 13, 2026
@nextcloud nextcloud deleted a comment from github-actions Bot Jul 13, 2026
Signed-off-by: alperozturk96 <alper_ozturk@proton.me>
// asynchronous one.
Handler handler = new Handler(context.getMainLooper());
try {
return ParcelFileDescriptor.open(file, accessMode, handler, error -> {
throw new FileNotFoundException("Failed to open document for writing " + ocFile.getFileName());
}
} else {
return ParcelFileDescriptor.open(file, accessMode);
Signed-off-by: alperozturk96 <alper_ozturk@proton.me>
@nextcloud nextcloud deleted a comment from github-actions Bot Jul 14, 2026
@nextcloud nextcloud deleted a comment from github-actions Bot Jul 14, 2026
@github-actions

Copy link
Copy Markdown

APK file: https://github.com/nextcloud/android/actions/runs/29312354429/artifacts/8302671223
To test this change/fix you can simply download above APK file and install and test it in parallel to your existing Nextcloud app.
qrcode (please click on link to get QR code displayed)

@github-actions

Copy link
Copy Markdown

Codacy

SpotBugs

CategoryBaseNew
Bad practice3232
Correctness6666
Dodgy code213213
Experimental11
Malicious code vulnerability22
Multithreaded correctness2929
Performance4141
Security1919
Total403403

@github-actions

Copy link
Copy Markdown

blue-Light-Screenshot test failed, but no output was generated. Maybe a preliminary stage failed.

private fun ensureParentDirectory(target: File) {
val parent = target.parentFile ?: return

if (parent.exists() && !parent.isDirectory && !parent.delete()) {
private fun ensureParentDirectory(target: File) {
val parent = target.parentFile ?: return

if (parent.exists() && !parent.isDirectory && !parent.delete()) {
private fun ensureParentDirectory(target: File) {
val parent = target.parentFile ?: return

if (parent.exists() && !parent.isDirectory && !parent.delete()) {
Log_OC.e(TAG, "Unable to delete file blocking parent folder ${parent.absolutePath}")
}

if (!parent.exists() && !parent.mkdirs()) {
Log_OC.e(TAG, "Unable to delete file blocking parent folder ${parent.absolutePath}")
}

if (!parent.exists() && !parent.mkdirs()) {
@github-actions

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Upload from external app doesn't work

2 participants