briar issueshttps://code.briarproject.org/briar/briar/-/issues2022-07-13T11:03:13Zhttps://code.briarproject.org/briar/briar/-/issues/2346Scanning Mailbox QR code uses lower half of camera image?2022-07-13T11:03:13ZSebastianScanning Mailbox QR code uses lower half of camera image?Related to #2269. Maybe !1600 hasn't fixed this entirely.
When I scan the Mailbox QR code, I have the feeling it doesn't work so well when arranging the two devices such that the qr code appears right in the preview square in the center...Related to #2269. Maybe !1600 hasn't fixed this entirely.
When I scan the Mailbox QR code, I have the feeling it doesn't work so well when arranging the two devices such that the qr code appears right in the preview square in the center of the briar screen.
Before !1600 I think it used to be so that moving the QR code to the uppermost part of a portrait-oriented briar phone scanned the QR code successfully. That doesn't work any longer, however I can scan very reliably when I position it such that the QR code is in the *lowest* part of the screen, outside of the preview square.Mailbox: Pairinghttps://code.briarproject.org/briar/briar/-/issues/1469Screen "flashing" when Briar runs in background2019-05-16T13:03:08ZmanuelScreen "flashing" when Briar runs in backgroundWhen running Briar in background my phone "flashes" the screen (like when doing screenshots) at random times.
I was not able to observe this behavior when running logcat.When running Briar in background my phone "flashes" the screen (like when doing screenshots) at random times.
I was not able to observe this behavior when running logcat.Android 1.1akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/938Screen filter detects Google Play Services on Sony Xperia Tipo2017-06-09T19:25:50ZakwizgranScreen filter detects Google Play Services on Sony Xperia TipoOn the Sony Xperia Tipo (Android 4.0.4), the screen filter warning shows Google Play Services, which I would have expected to be excluded as a system app.
I'm guessing this happens because Google Play Services wasn't part of the origina...On the Sony Xperia Tipo (Android 4.0.4), the screen filter warning shows Google Play Services, which I would have expected to be excluded as a system app.
I'm guessing this happens because Google Play Services wasn't part of the original system image - it was installed when the Android Market app updated itself to Google Play. So I guess the flags don't indicate that Google Play Services is a system app.
If my guess is right, this will happen on all phones that didn't originally have Google Play Services installed. Maybe we should consider adding a special exception for it? But to avoid malicious apps masquerading as Google Play Services (on devices where it isn't installed) to bypass the filter, the exception would need to be based on the signing key rather than the package name.Milestone Gakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/2043Scrolling not happening automatically for own blog posts2021-07-06T10:01:09ZIvanaScrolling not happening automatically for own blog postsDescription:
Scrolling doesn't happen automatically for own blog posts - in portrait orientation
Steps to reproduce:
1. Create enough blog or reblog posts to have more than one full screen of them on a device
2. Then create one more ...Description:
Scrolling doesn't happen automatically for own blog posts - in portrait orientation
Steps to reproduce:
1. Create enough blog or reblog posts to have more than one full screen of them on a device
2. Then create one more new blog post
Expected results:
1. On own device, wn blog post should appear on top of the page.
Actual result:
1. The new blog post does not appear on top of the screen before manually scrolling to it, or before tapping the blue 'Scroll' word on the message that briefly shows on the bottom of the screen
![device-2021-05-17-132727](/uploads/c005cc532d63069bc98a3ef874ce4be4/device-2021-05-17-132727.mp4)Adapt to changes in the Android platformIvanaIvana2021-04-30https://code.briarproject.org/briar/briar/-/issues/592Scrub addresses before logging them2018-06-12T11:32:20ZakwizgranScrub addresses before logging themMAC, IP and onion addresses should be scrubbed before logging to ensure we don't leave any sensitive information in plaintext on the device or send it in crash reports or feedback.
We need to keep enough information for the addresses ...MAC, IP and onion addresses should be scrubbed before logging to ensure we don't leave any sensitive information in plaintext on the device or send it in crash reports or feedback.
We need to keep enough information for the addresses to be useful for debugging, without harming user privacy. Perhaps something like the following:
* MAC addresses (including Bluetooth): keep the first and last octets, replace the rest with XX
* Link-local and site-local IPv4 addresses: keep the full address
* Other IPv4 addresses: keep the first and last octets, replace the rest with XX
* IPv6 addresses: not intentionally used by Briar, replace the whole thing with XX
* Onion addresses: keep the first three characters, replace the rest with XXMilestone CTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1642Search function2019-11-04T11:03:23ZjomocuSearch functionAdd an option to search contacts, or search messages from contacts.
In turn allow search for something within the chat, group, etc...
It would be a good idea :)Add an option to search contacts, or search messages from contacts.
In turn allow search for something within the chat, group, etc...
It would be a good idea :)https://code.briarproject.org/briar/briar/-/issues/470Second invitation doesn't disappear from available forums2018-06-12T11:32:24ZMegaloxSecond invitation doesn't disappear from available forumsA (A is already a member of the forum) gets invitations from B and C for the same forum. She accepts first B, when she accepts C she gets a toast but the entry in "available forums" doesn't disappear.
A (A is already a member of the forum) gets invitations from B and C for the same forum. She accepts first B, when she accepts C she gets a toast but the entry in "available forums" doesn't disappear.
Milestone CTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/133Security testing2018-06-12T11:32:38ZakwizgranSecurity testingWhite-box security testing of the latest beta for Milestone D -- findings to be documented in the issue tracker.White-box security testing of the latest beta for Milestone D -- findings to be documented in the issue tracker.Milestone Dakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/2405SecurityException at startup when getting Bluetooth bonded devices2023-06-30T10:34:39ZakwizgranSecurityException at startup when getting Bluetooth bonded devicesThis crash has been reported by Google Play but not by our crash reporter, perhaps because it happens early in the app lifecycle.
* Android version: 13
* Briar version: 1.4.15
* Phone models: Google raven, panther and bluejay
Stacktrac...This crash has been reported by Google Play but not by our crash reporter, perhaps because it happens early in the app lifecycle.
* Android version: 13
* Briar version: 1.4.15
* Phone models: Google raven, panther and bluejay
Stacktrace:
```
Exception java.lang.RuntimeException:
at android.app.ActivityThread.handleBindApplication (ActivityThread.java:6790)
at android.app.ActivityThread.-$$Nest$mhandleBindApplication
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2134)
at android.os.Handler.dispatchMessage (Handler.java:106)
at android.os.Looper.loopOnce (Looper.java:201)
at android.os.Looper.loop (Looper.java:288)
at android.app.ActivityThread.main (ActivityThread.java:7898)
at java.lang.reflect.Method.invoke
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:936)
Caused by java.lang.SecurityException:
at com.android.bluetooth.Utils.checkPermissionForDataDelivery (Utils.java:482)
at com.android.bluetooth.Utils.checkConnectPermissionForDataDelivery (Utils.java:514)
at com.android.bluetooth.btservice.AdapterService$AdapterServiceBinder.getBondedDevices (AdapterService.java:2122)
at com.android.bluetooth.btservice.AdapterService$AdapterServiceBinder.getBondedDevices (AdapterService.java:2114)
at android.bluetooth.IBluetooth$Stub.onTransact (IBluetooth.java:642)
at android.os.Binder.execTransactInternal (Binder.java:1285)
at android.os.Binder.execTransact (Binder.java:1244)
```
AndroidSecureRandomProvider calls getBondedDevices() at startup to feed the entropy pool. We added a permission check for Android 12, but apparently it's not always effective.Android 1.4akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1980SecurityException in ConnectivityManager#getNetworkCapabilities()2022-04-20T14:51:58ZakwizgranSecurityException in ConnectivityManager#getNetworkCapabilities()* Android version: 11
* Phone model: Android Pixel 3 (aosp_blueline)
* Briar version: 1.2.16 (8a534b4)
Stacktrace:
```
Package android does not belong to 10144
java.lang.SecurityException: Package android does not belong to 10144
...* Android version: 11
* Phone model: Android Pixel 3 (aosp_blueline)
* Briar version: 1.2.16 (8a534b4)
Stacktrace:
```
Package android does not belong to 10144
java.lang.SecurityException: Package android does not belong to 10144
at android.os.Parcel.createExceptionOrNull(Parcel.java:2373)
at android.os.Parcel.createException(Parcel.java:2357)
at android.os.Parcel.readException(Parcel.java:2340)
at android.os.Parcel.readException(Parcel.java:2282)
at android.net.IConnectivityManager$Stub$Proxy.getNetworkCapabilities(IConnectivityManager.java:2456)
at android.net.ConnectivityManager.getNetworkCapabilities(ConnectivityManager.java:1385)
at org.briarproject.bramble.plugin.tcp.AndroidLanTcpPlugin.getSocketFactory(AndroidLanTcpPlugin.java:241)
at org.briarproject.bramble.plugin.tcp.AndroidLanTcpPlugin.lambda$updateConnectionStatus$0(AndroidLanTcpPlugin.java:283)
at org.briarproject.bramble.plugin.tcp.AndroidLanTcpPlugin.lambda$updateConnectionStatus$0$AndroidLanTcpPlugin(Unknown Source:0)
at org.briarproject.bramble.plugin.tcp.-$$Lambda$AndroidLanTcpPlugin$RnrvoJsXGo91N3aS5KUNVN0J3hU.run(Unknown Source:2)
at org.briarproject.bramble.PoliteExecutor.lambda$execute$0(PoliteExecutor.java:57)
at org.briarproject.bramble.PoliteExecutor.lambda$execute$0$PoliteExecutor(Unknown Source:0)
at org.briarproject.bramble.-$$Lambda$PoliteExecutor$wSvuPL6t_HUoaaqCVexrhJX_RSg.run(Unknown Source:6)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:923)
Caused by: android.os.RemoteException: Remote stack trace:
at android.app.AppOpsManager.checkPackage(AppOpsManager.java:7739)
at com.android.server.ConnectivityService.getNetworkCapabilities(ConnectivityService.java:1668)
at android.net.IConnectivityManager$Stub.onTransact(IConnectivityManager.java:978)
at android.os.Binder.execTransactInternal(Binder.java:1154)
at android.os.Binder.execTransact(Binder.java:1123)
```
Edited log:
```
03-06 01:00:56.967 I/BriarApplicationImpl: Created
03-06 01:00:56.996 I/AccountManagerImpl: Found database key in primary file
03-06 01:05:05.194 I/BaseActivity: Creating SplashScreenActivity
03-06 01:05:05.221 I/BaseActivity: Starting SplashScreenActivity
03-06 01:05:05.226 I/BaseActivity: Resuming SplashScreenActivity
03-06 01:05:05.748 I/BaseActivity: Pausing SplashScreenActivity
03-06 01:05:05.758 I/BaseActivity: Creating NavDrawerActivity
03-06 01:05:05.844 I/BaseActivity: Starting NavDrawerActivity
03-06 01:05:05.846 I/BaseActivity: Resuming NavDrawerActivity
03-06 01:05:05.846 I/BriarActivity: Not signed in, launching StartupActivity
03-06 01:05:05.853 I/BaseActivity: Pausing NavDrawerActivity
03-06 01:05:05.858 I/BaseActivity: Creating StartupActivity
03-06 01:05:05.870 I/AccountManagerImpl: Found database key in primary file
03-06 01:05:05.872 I/BaseActivity: Starting StartupActivity
03-06 01:05:05.914 I/BaseActivity: Resuming StartupActivity
03-06 01:05:06.031 I/BaseActivity: Stopping NavDrawerActivity
03-06 01:05:06.570 I/BaseActivity: Stopping SplashScreenActivity
03-06 01:05:06.571 I/BaseActivity: Destroying SplashScreenActivity
03-06 01:05:12.041 I/AccountManagerImpl: Found database key in primary file
03-06 01:05:13.075 I/AndroidKeyStrengthener: Loaded key from keystore
03-06 01:05:13.420 I/BriarService: Created
03-06 01:05:13.422 I/RenewableWakeLock: Acquiring wake lock org.briarproject.briar.android
03-06 01:05:13.431 I/LifecycleManagerImpl: Opening database
03-06 01:05:13.443 I/H2Database: Reopening DB: true
03-06 01:05:13.743 I/JdbcDatabase: 15994116646 ms since last compaction
03-06 01:05:13.945 I/IdentityManagerImpl: Identity loaded
03-06 01:05:13.955 I/LifecycleManagerImpl: Starting services
03-06 01:05:13.958 I/AndroidNetworkManager: Received broadcast android.net.conn.CONNECTIVITY_CHANGE
03-06 01:05:13.967 I/PluginManagerImpl: Starting simplex plugins
03-06 01:05:13.967 I/PluginManagerImpl: Starting duplex plugins
03-06 01:05:13.971 I/PluginManagerImpl: org.briarproject.bramble.bluetooth changed from state STARTING_STOPPING to DISABLED
03-06 01:05:13.971 I/PluginViewModel: TransportStateEvent: org.briarproject.bramble.bluetooth is DISABLED
03-06 01:05:13.976 I/AndroidTorPlugin: Deleted Tor binary
03-06 01:05:13.978 I/AndroidTorPlugin: Deleted obfs4 binary
03-06 01:05:13.989 I/BluetoothPlugin: Local address null
03-06 01:05:14.009 I/PluginManagerImpl: org.briarproject.bramble.lan changed from state STARTING_STOPPING to INACTIVE
03-06 01:05:14.009 I/PluginViewModel: TransportStateEvent: org.briarproject.bramble.lan is INACTIVE
03-06 01:05:14.016 I/AndroidLanTcpPlugin: Connected to wifi
```
Looks like this phone's running an AOSP build. I won't add this to the milestone for now, unless/until we get further reports.Android 1.4akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/2409SecurityException when binding Bluetooth socket2023-05-29T11:38:26ZakwizgranSecurityException when binding Bluetooth socketThis crash looks similar to #1698 but the stacktrace is different. The error message says the app lacks permission android.permission.BLUETOOTH, which was replaced by new permissions in Android 12. Is the error message out of date, or do...This crash looks similar to #1698 but the stacktrace is different. The error message says the app lacks permission android.permission.BLUETOOTH, which was replaced by new permissions in Android 12. Is the error message out of date, or does this device still use the old Bluetooth permissions?
* Android version: 12
* Phone model: Redmi M2101K6R (sweet_global)
* Briar version: 1.4.18 (4797151)
* User feedback: "The app stopped out of nowhere and I need it urgently."
Stacktrace:
```
java.lang.SecurityException: UID 10414 / PID 7993 lacks permission android.permission.BLUETOOTH
at android.os.Parcel.createExceptionOrNull(Parcel.java:2426)
at android.os.Parcel.createException(Parcel.java:2410)
at android.os.Parcel.readException(Parcel.java:2393)
at android.os.Parcel.readException(Parcel.java:2335)
at android.bluetooth.IBluetoothSocketManager$Stub$Proxy.createSocketChannel(IBluetoothSocketManager.java:265)
at android.bluetooth.BluetoothSocket.bindListen(BluetoothSocket.java:453)
at android.bluetooth.BluetoothAdapter.createNewRfcommSocketAndRecord(BluetoothAdapter.java:2883)
at android.bluetooth.BluetoothAdapter.listenUsingInsecureRfcommWithServiceRecord(BluetoothAdapter.java:2830)
at org.briarproject.bramble.plugin.bluetooth.AndroidBluetoothPlugin.openServerSocket(AndroidBluetoothPlugin.java:152)
at org.briarproject.bramble.plugin.bluetooth.AndroidBluetoothPlugin.openServerSocket(AndroidBluetoothPlugin.java:61)
at org.briarproject.bramble.plugin.bluetooth.AbstractBluetoothPlugin.lambda$bind$0(AbstractBluetoothPlugin.java:215)
at org.briarproject.bramble.plugin.bluetooth.AbstractBluetoothPlugin.$r8$lambda$Nv27P8uQlCv6FpD1a0uQUudeR9U(Unknown Source:0)
at org.briarproject.bramble.plugin.bluetooth.AbstractBluetoothPlugin$$ExternalSyntheticLambda0.run(Unknown Source:2)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
at java.lang.Thread.run(Thread.java:1012)
```
Edited log:
```
12-28 01:54:17.763 I/PluginManagerImpl: Starting simplex plugins
12-28 01:54:17.763 I/PluginManagerImpl: Starting duplex plugins
12-28 01:54:17.779 I/PluginManagerImpl: org.briarproject.bramble.bluetooth changed from state STARTING_STOPPING to INACTIVE
12-28 01:54:17.799 I/AbstractBluetoothPlugin: Local address null
12-28 01:54:17.802 I/PluginViewModel: TransportStateEvent: org.briarproject.bramble.bluetooth is INACTIVE
```
Looks like the plugin was enabled and the crash happened at startup.Android 1.4akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/2273SecurityException when reading from removable drive2022-04-20T14:53:56ZakwizgranSecurityException when reading from removable drive* Android version: 10
* Phone model: Redmi M2006C3LG (dandelion_global)
* Briar version: 1.4.4 (36670a8)
Stacktrace:
```
java.lang.SecurityException: org.briarproject.briar.android has no access to content://media/external/audio/media/4...* Android version: 10
* Phone model: Redmi M2006C3LG (dandelion_global)
* Briar version: 1.4.4 (36670a8)
Stacktrace:
```
java.lang.SecurityException: org.briarproject.briar.android has no access to content://media/external/audio/media/436
at android.os.Parcel.createException(Parcel.java:2074)
at android.os.Parcel.readException(Parcel.java:2042)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:188)
at android.database.DatabaseUtils.readExceptionWithFileNotFoundExceptionFromParcel(DatabaseUtils.java:151)
at android.content.ContentProviderProxy.openTypedAssetFile(ContentProviderNative.java:705)
at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1700)
at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:1516)
at android.content.ContentResolver.openInputStream(ContentResolver.java:1200)
at org.briarproject.bramble.plugin.file.AndroidRemovableDrivePlugin.openInputStream(AndroidRemovableDrivePlugin.java:35)
at org.briarproject.bramble.plugin.file.AbstractRemovableDrivePlugin.createReader(AbstractRemovableDrivePlugin.java:110)
at org.briarproject.bramble.plugin.file.RemovableDriveReaderTask.run(RemovableDriveReaderTask.java:38)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:919)
```Android 1.4akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/2420SecurityException when requesting Bluetooth discoverability2024-03-19T11:28:53ZakwizgranSecurityException when requesting Bluetooth discoverability* Android version: 12
* Phone model: Nubia NX679J (NX679J-UN)
* Briar version: 1.4.22 (f02bbeb)
* User feedback: "Attempting to add contact."
Stacktrace:
```
java.lang.SecurityException: Permission Denial: starting Intent { act=android....* Android version: 12
* Phone model: Nubia NX679J (NX679J-UN)
* Briar version: 1.4.22 (f02bbeb)
* User feedback: "Attempting to add contact."
Stacktrace:
```
java.lang.SecurityException: Permission Denial: starting Intent { act=android.bluetooth.adapter.action.REQUEST_DISCOVERABLE cmp=com.android.settings/.bluetooth.RequestPermissionActivity (has extras) } from ProcessRecord{708319 15100:org.b
riarproject.briar.android/u0a226} (pid=15100, uid=10226) requires android.permission.BLUETOOTH
at android.os.Parcel.createExceptionOrNull(Parcel.java:2426)
at android.os.Parcel.createException(Parcel.java:2410)
at android.os.Parcel.readException(Parcel.java:2393)
at android.os.Parcel.readException(Parcel.java:2335)
at android.app.IActivityTaskManager$Stub$Proxy.startActivity(IActivityTaskManager.java:2559)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:2071)
at android.app.Activity.startActivityForResult(Activity.java:5574)
at androidx.activity.ComponentActivity.startActivityForResult(ComponentActivity.java:574)
at androidx.core.app.ActivityCompat.startActivityForResult(ActivityCompat.java:234)
at androidx.activity.ComponentActivity$2.onLaunch(ComponentActivity.java:208)
at androidx.activity.result.ActivityResultRegistry$2.launch(ActivityResultRegistry.java:166)
at androidx.activity.result.ActivityResultLauncher.launch(ActivityResultLauncher.java:47)
at org.briarproject.briar.android.contact.add.nearby.AddNearbyContactActivity.requestBluetoothDiscoverable(AddNearbyContactActivity.java:125)
at org.briarproject.briar.android.contact.add.nearby.AddNearbyContactActivity.lambda$onCreate$0(AddNearbyContactActivity.java:78)
at org.briarproject.briar.android.contact.add.nearby.AddNearbyContactActivity.$r8$lambda$AaDmrglLROf2UvjD046fjtdaWVs(Unknown Source:0)
at org.briarproject.briar.android.contact.add.nearby.AddNearbyContactActivity$$ExternalSyntheticLambda2.onEvent(Unknown Source:4)
at org.briarproject.briar.android.viewmodel.LiveEvent$LiveEventObserver.onChanged(LiveEvent.java:84)
at org.briarproject.briar.android.viewmodel.LiveEvent$LiveEventObserver.onChanged(LiveEvent.java:70)
at androidx.lifecycle.LiveData.considerNotify(LiveData.java:133)
at androidx.lifecycle.LiveData.dispatchingValue(LiveData.java:151)
at androidx.lifecycle.LiveData.setValue(LiveData.java:309)
at org.briarproject.briar.android.viewmodel.MutableLiveEvent.setEvent(MutableLiveEvent.java:29)
at org.briarproject.briar.android.contact.add.nearby.AddNearbyContactViewModel.showQrCodeFragmentIfAllowed(AddNearbyContactViewModel.java:410)
at org.briarproject.briar.android.contact.add.nearby.AddNearbyContactIntroFragment.lambda$new$0(AddNearbyContactIntroFragment.java:38)
at org.briarproject.briar.android.contact.add.nearby.AddNearbyContactIntroFragment.$r8$lambda$O-WIAJRYMQrkvddeOqSFkFHjtQ0(Unknown Source:0)
at org.briarproject.briar.android.contact.add.nearby.AddNearbyContactIntroFragment$$ExternalSyntheticLambda1.onActivityResult(Unknown Source:4)
at androidx.activity.result.ActivityResultRegistry.dispatchResult(ActivityResultRegistry.java:367)
at androidx.activity.ComponentActivity$2$1.run(ComponentActivity.java:159)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:242)
at android.os.Looper.loop(Looper.java:374)
at android.app.ActivityThread.main(ActivityThread.java:9333)
at java.lang.reflect.Method.invoke(Native Method)
```
Last line of log:
```
03-03 00:28:17.358 I/AddNearbyContactActivity: Asking for Bluetooth discoverability
```
Looks like another manufacturer that didn't completely remove the old Bluetooth permission checks when migrating to the new Android 12 permissions.Android 1.4akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1446SecurityException when starting TestDataActivity with multiple Briar versions...2018-11-07T09:52:46ZakwizgranSecurityException when starting TestDataActivity with multiple Briar versions installed* Android version: 7.1.2
* Phone model: Motorola Moto G4 (lineage_athene)
* Briar version: 1.1.3 (93090f0, a debug build for testing the remote contact UX)
* Package name: org.briarproject.briar.android.debug.qr
Stack trace:
```
java.la...* Android version: 7.1.2
* Phone model: Motorola Moto G4 (lineage_athene)
* Briar version: 1.1.3 (93090f0, a debug build for testing the remote contact UX)
* Package name: org.briarproject.briar.android.debug.qr
Stack trace:
```
java.lang.SecurityException: Permission Denial: starting Intent { cmp=org.briarproject.briar.android.debug/org.briarproject.briar.android.test.TestDataActivity } from ProcessRecord{81ac00c 16789:org.briarproject.briar.android.debug.qr/u0a88} (pid=16789, uid=10088) not exported from uid 10087
at android.os.Parcel.readException(Parcel.java:1684)
at android.os.Parcel.readException(Parcel.java:1637)
at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:3101)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1520)
at android.app.Activity.startActivityForResult(Activity.java:4229)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:767)
at android.app.Activity.startActivityForResult(Activity.java:4187)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:754)
at android.app.Activity.startActivity(Activity.java:4526)
at android.app.Activity.startActivity(Activity.java:4494)
at android.content.ContextWrapper.startActivity(ContextWrapper.java:356)
at android.support.v7.preference.Preference.performClick(Preference.java:1180)
at android.support.v7.preference.Preference.performClick(Preference.java:1148)
at android.support.v7.preference.Preference$1.onClick(Preference.java:172)
at android.view.View.performClick(View.java:5637)
at android.view.View$PerformClick.run(View.java:22433)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6186)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
```
It looks like the intent is trying to open an activity that belongs to another version of Briar with a different package name (org.briarproject.briar.android.debug rather than org.briarproject.briar.android.debug.qr).
Although this was a debug build, I'm opening a ticket because it suggests something unexpected is happening in the way intents are handled - shouldn't they always be routed to the same app by default if a component is specified?Julian DehmJulian Dehmhttps://code.briarproject.org/briar/briar/-/issues/2429SecurityException: Permission Denial for CLOSE_SYSTEM_DIALOGS2023-04-18T15:39:33ZakwizgranSecurityException: Permission Denial for CLOSE_SYSTEM_DIALOGS* Android version: 12
* Phone model: Google Pixel 3 XL (crosshatch)
* Briar version: 1.4.23 (070165f)
* User feedback: "I wrote a message, then Briar shut down. This also happens frequently to other apps."
Stacktrace:
```
java.lang.Secu...* Android version: 12
* Phone model: Google Pixel 3 XL (crosshatch)
* Briar version: 1.4.23 (070165f)
* User feedback: "I wrote a message, then Briar shut down. This also happens frequently to other apps."
Stacktrace:
```
java.lang.SecurityException: Permission Denial: android.intent.action.CLOSE_SYSTEM_DIALOGS broadcast from org.briarproject.briar.android (pid=24174, uid=10004) requires android.permission.BROADCAST_CLOSE_SYSTEM_DIALOGS.
at android.os.Parcel.createExceptionOrNull(Parcel.java:2425)
at android.os.Parcel.createException(Parcel.java:2409)
at android.os.Parcel.readException(Parcel.java:2392)
at android.os.Parcel.readException(Parcel.java:2334)
at android.app.IActivityManager$Stub$Proxy.closeSystemDialogs(IActivityManager.java:7614)
at com.android.internal.policy.PhoneWindow.sendCloseSystemWindows(PhoneWindow.java:3791)
at com.android.internal.policy.PhoneFallbackEventHandler.sendCloseSystemWindows(PhoneFallbackEventHandler.java:323)
at com.android.internal.policy.PhoneFallbackEventHandler.startCallActivity(PhoneFallbackEventHandler.java:275)
at com.android.internal.policy.PhoneFallbackEventHandler.onKeyUp(PhoneFallbackEventHandler.java:261)
at com.android.internal.policy.PhoneFallbackEventHandler.dispatchKeyEvent(PhoneFallbackEventHandler.java:76)
at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:6317)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:6141)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5623)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5680)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5646)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5811)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5654)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5868)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5627)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5680)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5646)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5654)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5627)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5680)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5646)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5844)
at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:6002)
at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:3158)
at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:2722)
at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:2713)
at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:3135)
at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:154)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:335)
at android.os.Looper.loopOnce(Looper.java:161)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7842)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
Caused by: android.os.RemoteException: Remote stack trace:
at com.android.server.wm.ActivityTaskManagerService.checkCanCloseSystemDialogs(ActivityTaskManagerService.java:2955)
at com.android.server.wm.ActivityTaskManagerService.access$900(ActivityTaskManagerService.java:294)
at com.android.server.wm.ActivityTaskManagerService$LocalService.checkCanCloseSystemDialogs(ActivityTaskManagerService.java:5309)
at com.android.server.wm.ActivityTaskManagerService$LocalService.closeSystemDialogs(ActivityTaskManagerService.java:5783)
at com.android.server.am.ActivityManagerService.closeSystemDialogs(ActivityManagerService.java:3800)
```
Edited log:
```
04-02 10:16:30.039 I/BaseActivity: Starting ConversationActivity
04-02 10:16:30.041 I/BaseActivity: Resuming ConversationActivity
04-02 10:16:32.999 I/AutoDeleteManagerImpl: Sending message with auto-delete timer 604800000
04-02 10:16:33.045 I/DuplexOutgoingSession: Next send time decreased
04-02 10:16:33.052 I/DuplexOutgoingSession: Generated offer: true
04-02 10:16:33.052 I/DuplexOutgoingSession: Sent offer
04-02 10:16:33.061 I/DuplexOutgoingSession: Generated offer: false
04-02 10:16:33.495 I/DuplexOutgoingSession: Generated batch: true
04-02 10:16:33.495 I/ConversationActivity: Messages sent
04-02 10:16:33.495 I/DuplexOutgoingSession: Sent batch
04-02 10:16:33.504 I/DuplexOutgoingSession: Generated batch: false
04-02 10:16:34.069 I/ConversationActivity: Messages acked
04-02 10:16:42.127 I/DuplexOutgoingSession: Generated request: true
04-02 10:16:42.127 I/DuplexOutgoingSession: Sent request
04-02 10:16:42.128 I/DuplexOutgoingSession: Generated request: false
04-02 10:16:42.743 I/ValidationManagerImpl: Validating message for org.briarproject.briar.messaging
04-02 10:16:42.761 I/DuplexOutgoingSession: Generated ack: true
04-02 10:16:42.762 I/DuplexOutgoingSession: Sent ack
04-02 10:16:42.768 I/ValidationManagerImpl: Delivering message for org.briarproject.briar.messaging
04-02 10:16:42.770 I/AutoDeleteManagerImpl: Mirroring auto-delete timer 604800000
04-02 10:16:42.786 I/ConversationActivity: Message received, adding
04-02 10:16:42.791 I/DuplexOutgoingSession: Generated ack: false
04-02 10:17:12.763 I/DuplexOutgoingSession: Sending keepalive
04-02 10:17:33.484 I/DuplexOutgoingSession: Checking for retransmittable messages
04-02 10:17:33.514 I/DuplexOutgoingSession: Generated batch: false
04-02 10:17:33.520 I/DuplexOutgoingSession: Generated offer: false
```
As far as I can tell, the crash happens because `PhoneFallbackEventHandler` is being called to [handle a key event](https://cs.android.com/android/platform/superproject/+/master:frameworks/base/core/java/com/android/internal/policy/PhoneFallbackEventHandler.java;drc=95c1165bb895dd844e1793460710f7163dd330a3;l=250) for `KEYCODE_CALL`. The handler tries to start a call activity for the current app, which fails because Briar doesn't have permission to close system dialogs (which I guess is part of the process of launching the call activity).
So perhaps this is happening just because the user hits the call button on their device/keyboard, or perhaps it also requires some other circumstances, like an unusual device/keyboard config. Either way, it looks like a problem that's specific to this user and (based on their comment) not specific to Briar.https://code.briarproject.org/briar/briar/-/issues/2143SecurityException: Permission Denial when opening image2022-04-20T14:53:08ZakwizgranSecurityException: Permission Denial when opening image* Android version: 4.4.2
* Phone model: Samsung GT-I9301I (s3ve3gxx)
* Briar version: 1.3.6 (445ef08)
Stacktrace:
```
java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/...* Android version: 4.4.2
* Phone model: Samsung GT-I9301I (s3ve3gxx)
* Briar version: 1.3.6 (445ef08)
Stacktrace:
```
java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/images/media/835 from pid=28044, uid=10227 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()
at android.os.Parcel.readException(Parcel.java:1472)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:185)
at android.database.DatabaseUtils.readExceptionWithFileNotFoundExceptionFromParcel(DatabaseUtils.java:148)
at android.content.ContentProviderProxy.openTypedAssetFile(ContentProviderNative.java:682)
at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1066)
at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:907)
at android.content.ContentResolver.openInputStream(ContentResolver.java:632)
at org.briarproject.briar.android.settings.SettingsViewModel.trySetAvatar(SettingsViewModel.java:230)
at org.briarproject.briar.android.settings.SettingsViewModel.lambda$setAvatar$2(SettingsViewModel.java:214)
at org.briarproject.briar.android.settings.SettingsViewModel.lambda$setAvatar$2$SettingsViewModel(SettingsViewModel.java)
at org.briarproject.briar.android.settings.-$$Lambda$SettingsViewModel$nVOlNd9texPikn4W8A-1eS1Xxu4.run(lambda)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)
```
I'm not sure whether we need to request READ_EXTERNAL_STORAGE on API 19, or whether this is caused by a bug in the app supplying the image and we just need to handle the exception cleanly.Android 1.4akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/804Self-destruct timer for messages2021-07-06T09:57:26ZTorsten GroteSelf-destruct timer for messagesDuring testing session #788 and during the first Briar presentation at Cryptorave, users asked if we support a self-destruct timer for messages like Signal introduced recently and like it is also supported by Telegram.
The user seemed t...During testing session #788 and during the first Briar presentation at Cryptorave, users asked if we support a self-destruct timer for messages like Signal introduced recently and like it is also supported by Telegram.
The user seemed to see less need for the feature after it was explained that this feature does not help against adversaries who also receive that message, because they can always retain it despite the self-destruct timer. Most users might not know that and get a false sense of security from such a feature. However, testers still found it nice to be able to let messages delete automatically in case they are forced to enter their password or somebody gets hold of their phone unlocked.Self-destructing messages2021-01-31https://code.briarproject.org/briar/briar/-/issues/945Send Message Button bug2019-02-27T13:17:26ZThankgod RichardSend Message Button bugThe send button in the conversation don't send until you close the keyboard.The send button in the conversation don't send until you close the keyboard.https://code.briarproject.org/briar/briar/-/issues/1129Send message on ctrl+return2018-01-07T11:49:33ZsbkafSend message on ctrl+returnhttps://code.briarproject.org/briar/briar/-/issues/1074Separate "sign out" from other menu items2022-09-27T17:16:43ZakwizgranSeparate "sign out" from other menu itemsUser feedback: "Twice we fat fingered the "Sign out" option in the menu. It would probably be best to keep it at the bottom, away from the rest of the entries."User feedback: "Twice we fat fingered the "Sign out" option in the menu. It would probably be best to keep it at the bottom, away from the rest of the entries."