Fix a bug where LocationManager's addGpsStatusListener does not throw a

SecurityException if LocationManagerService.mGpsStatusProvider is null
even when ACCESS_FINE_LOCATION permission is not present.

Tested under Nexus 5 and Molly with lmp-mr1-dev build with
android.location2.cts.LocationManagerTest#testGpsStatusListener CTS
test case such that it has been modified to expect SecurityException
only from .addGpsStatusListener.

Bug: 18095673
Change-Id: I09f9e7224a3b0eab91001f5092f0ef6e0ada7b08
This commit is contained in:
Takayuki Hoshi
2014-10-23 16:46:02 +09:00
parent 6c9b08478b
commit b254ab6add

View File

@@ -1796,9 +1796,6 @@ public class LocationManagerService extends ILocationManager.Stub {
@Override
public boolean addGpsStatusListener(IGpsStatusListener listener, String packageName) {
if (mGpsStatusProvider == null) {
return false;
}
int allowedResolutionLevel = getCallerAllowedResolutionLevel();
checkResolutionLevelIsSufficientForProviderUse(allowedResolutionLevel,
LocationManager.GPS_PROVIDER);
@@ -1813,6 +1810,10 @@ public class LocationManagerService extends ILocationManager.Stub {
Binder.restoreCallingIdentity(ident);
}
if (mGpsStatusProvider == null) {
return false;
}
try {
mGpsStatusProvider.addGpsStatusListener(listener);
} catch (RemoteException e) {