Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
Trac
Trac
  • Project overview
    • Project overview
    • Details
    • Activity
  • Issues 246
    • Issues 246
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Operations
    • Operations
    • Metrics
    • Incidents
  • Analytics
    • Analytics
    • Value Stream
  • Wiki
    • Wiki
  • Members
    • Members
  • Activity
  • Create a new issue
  • Issue Boards
Collapse sidebar

GitLab is used only for code review, issue tracking and project management. Canonical locations for source code are still https://gitweb.torproject.org/ https://git.torproject.org/ and git-rw.torproject.org.

  • Legacy
  • TracTrac
  • Issues
  • #28705

Closed (moved)
Open
Opened Dec 03, 2018 by Matthew Finkel@sysrqb

Tor Browser on Android is crashing on newer Android devices (>= Android N) by file download

This is already patched upstream in FF62, but the backport is not-small. Maybe we can get away with a smaller patch that solves the main problem.

Summary: In #27701 (moved) we solved the bug where torbutton prevents downloading a file on Android. In #28051 (moved) we solved the problem where notifications weren't working on newer versions of Android.

Now we have a problem that on newer versions of Android, the runtime prevents "leaking" file URIs from one app to another. In particular, this is happening when Tor Browser is downloading a file, the browser creates a notification with the URI of the local destination file embedded in it.

This results in an exception stacktrace like:

D AndroidRuntime: Shutting down VM
E AndroidRuntime: FATAL EXCEPTION: main
E AndroidRuntime: Process: org.torproject.torbrowser_alpha, PID: 18167
E AndroidRuntime: android.os.FileUriExposedException: file:///storage/emulated/0/Download/tor-browser-8.5a5-android-armv7.apk exposed beyond app through Intent.getData()
E AndroidRuntime:        at android.os.StrictMode.onFileUriExposed(StrictMode.java:1960)
E AndroidRuntime:        at android.net.Uri.checkFileUriExposed(Uri.java:2356)
E AndroidRuntime:        at android.content.Intent.prepareToLeaveProcess(Intent.java:9881)
E AndroidRuntime:        at android.content.Intent.prepareToLeaveProcess(Intent.java:9835)
E AndroidRuntime:        at android.app.PendingIntent.getActivity(PendingIntent.java:342)
E AndroidRuntime:        at android.app.PendingIntent.getActivity(PendingIntent.java:304)
E AndroidRuntime:        at org.mozilla.gecko.notifications.NotificationHelper.showNotification(NotificationHelper.java:298)
E AndroidRuntime:        at org.mozilla.gecko.notifications.NotificationHelper.handleMessage(NotificationHelper.java:120)
E AndroidRuntime:        at org.mozilla.gecko.EventDispatcher$2.run(EventDispatcher.java:337)
E AndroidRuntime:        at android.os.Handler.handleCallback(Handler.java:790)
E AndroidRuntime:        at android.os.Handler.dispatchMessage(Handler.java:99)
E AndroidRuntime:        at android.os.Looper.loop(Looper.java:164)
E AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:6494)
E AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)
E AndroidRuntime:        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

This was patched upstream: https://bugzilla.mozilla.org/show_bug.cgi?id=1450449

Crash report: https://bugzilla.mozilla.org/show_bug.cgi?id=1476681

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking
None
Due date
None
Reference: legacy/trac#28705