GCX-HCI / tray

a SharedPreferences replacement for Android with multiprocess support
Apache License 2.0
2.29k stars 273 forks source link

SecurityException #92

Open b5-3 opened 7 years ago

b5-3 commented 7 years ago

Do you know why this security exception occur? I am accessing it in my own process.

I am keeping tray provider like below for proguard obfuscation

-keep class net.grandcentrix.tray.provider.** {*;}
03-25 15:02:57.107 W 22864    22969    System.err:            net.grandcentrix.tray.a.f: Hard error accessing the ContentProvider 
03-25 15:02:57.107 W 22864    22969    System.err:              at net.grandcentrix.tray.provider.TrayProviderHelper.queryProvider(SourceFile:170) 
03-25 15:02:57.107 W 22864    22969    System.err:              at net.grandcentrix.tray.provider.ContentProviderStorage.getVersion(SourceFile:216) 
03-25 15:02:57.107 W 22864    22969    System.err:              at net.grandcentrix.tray.a.e.a(SourceFile:257) 
03-25 15:02:57.107 W 22864    22969    System.err:              at net.grandcentrix.tray.a.e.a(SourceFile:291) 
03-25 15:02:57.107 W 22864    22969    System.err:              at net.grandcentrix.tray.a.e.<init>(SourceFile:57) 
03-25 15:02:57.107 W 22864    22969    System.err:              at net.grandcentrix.tray.a.a.<init>(SourceFile:31) 
03-25 15:02:57.107 W 22864    22969    System.err:              at net.grandcentrix.tray.c.<init>(SourceFile:43) 
03-25 15:02:57.107 W 22864    22969    System.err:              at net.grandcentrix.tray.c.<init>(SourceFile:48) 
03-25 15:02:57.108 W 22864    22969    System.err:            Caused by: java.lang.SecurityException: Permission Denial: reading net.grandcentrix.tray.provider.TrayContentProvider uri content://com.xxxxxxx.tray/internal_preferences/THEME/version?backup=true from pid=0, uid=1000 requires the provider be exported, or grantUriPermission() 
03-25 15:02:57.109 W 22864    22969    System.err:              at net.grandcentrix.tray.provider.TrayProviderHelper.queryProvider(SourceFile:168) 
03-25 15:02:57.113 W 22864    22969    System.err:            net.grandcentrix.tray.a.f: Hard error accessing the ContentProvider 
03-25 15:02:57.113 W 22864    22969    System.err:              at net.grandcentrix.tray.provider.TrayProviderHelper.queryProvider(SourceFile:170) 
03-25 15:02:57.113 W 22864    22969    System.err:              at net.grandcentrix.tray.provider.ContentProviderStorage.getVersion(SourceFile:216) 
03-25 15:02:57.113 W 22864    22969    System.err:              at net.grandcentrix.tray.a.e.a(SourceFile:257) 
03-25 15:02:57.114 W 22864    22969    System.err:              at net.grandcentrix.tray.a.e.a(SourceFile:291) 
03-25 15:02:57.114 W 22864    22969    System.err:              at net.grandcentrix.tray.a.e.b(SourceFile:130) 
03-25 15:02:57.114 W 22864    22969    System.err:            Caused by: java.lang.SecurityException: Permission Denial: reading net.grandcentrix.tray.provider.TrayContentProvider uri content://com.xxxxxxxx.tray/internal_preferences/THEME/version?backup=true from pid=0, uid=1000 requires the provider be exported, or grantUriPermission() 
03-25 15:02:57.115 W 22864    22969    System.err:              at net.grandcentrix.tray.provider.TrayProviderHelper.queryProvider(SourceFile:168) 
passsy commented 7 years ago

Does it happen only for release builds? how often does it happen? Always? When are you querying the provider? Right after the app has started?

b5-3 commented 7 years ago

When I receive ACTION_MY_PACKAGE_REPLACED, I read a preference key like below in onReceive() means, process has been killed for package install and then created by ACTION_MY_PACKAGE_REPLACED.

it's occurred frequently. not always I have observed this in release build only now, but I'm not sure that debug build has no same issue.

Should I create a tray preference instance in Application class?