diff --git a/CHANGELOG.md b/CHANGELOG.md index 0706c490f..61c13dce4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ Test and beta releases will have experimental functions enabled by default. **Next release** * Fixed empty settings values ([issue](https://github.com/M66B/XPrivacy/issues/1164)) +* Added restriction for *NetworkInfo.getExtraInfo* ([issue](https://github.com/M66B/XPrivacy/issues/1175)) * Updated German translation [Open issues](https://github.com/M66B/XPrivacy/issues?state=open) diff --git a/README.md b/README.md index 1cd4d7da8..13fb1a541 100644 --- a/README.md +++ b/README.md @@ -164,6 +164,7 @@ For easy usage, data is restricted by category: * Internet * revoke access to the internet + * return fake extra info * return fake disconnected state * return fake supplicant disconnected state diff --git a/src/biz/bokhorst/xprivacy/Meta.java b/src/biz/bokhorst/xprivacy/Meta.java index 44bc3181a..b09bcb21d 100644 --- a/src/biz/bokhorst/xprivacy/Meta.java +++ b/src/biz/bokhorst/xprivacy/Meta.java @@ -64,10 +64,13 @@ public static List get() { listHook.add(new Hook("internet", "getActiveNetworkInfo", true, false, null, 10, null, null)); listHook.add(new Hook("internet", "getAllNetworkInfo", false, false, null, 10, null, null)); listHook.add(new Hook("internet", "getNetworkInfo", true, false, null, 10, null, null)); - listHook.add(new Hook("internet", "getDetailedState", false, false, null, 10, null, null)); - listHook.add(new Hook("internet", "getState", false, false, null, 10, null, null)); - listHook.add(new Hook("internet", "isConnected", false, false, null, 10, null, null)); - listHook.add(new Hook("internet", "isConnectedOrConnecting", false, false, null, 10, null, null)); + + listHook.add(new Hook("internet", "getDetailedState", false, false, null, 1, null, null)); + listHook.add(new Hook("internet", "getExtraInfo", false, false, null, 1, null, null)); + listHook.add(new Hook("internet", "getState", false, false, null, 1, null, null)); + listHook.add(new Hook("internet", "isConnected", false, false, null, 1, null, null)); + listHook.add(new Hook("internet", "isConnectedOrConnecting", false, false, null, 1, null, null)); + listHook.add(new Hook("internet", "getConnectionInfo", false, false, null, 10, null, null)); listHook.add(new Hook("ipc", "android.accounts.IAccountManager", false, false, "", 1, "1.99.1", null)); listHook.add(new Hook("ipc", "android.app.IActivityManager", false, false, "", 1, "1.99.1", null)); diff --git a/src/biz/bokhorst/xprivacy/PrivacyManager.java b/src/biz/bokhorst/xprivacy/PrivacyManager.java index ddedf3cc0..bede6de92 100644 --- a/src/biz/bokhorst/xprivacy/PrivacyManager.java +++ b/src/biz/bokhorst/xprivacy/PrivacyManager.java @@ -706,6 +706,10 @@ public static Object getDefacedProp(int uid, String name) { if (name.equals("DeviceDescriptor")) return cDeface; + // getExtraInfo + if (name.equals("ExtraInfo")) + return cDeface; + // Fallback Util.log(null, Log.WARN, "Fallback value name=" + name); return cDeface; diff --git a/src/biz/bokhorst/xprivacy/XNetworkInfo.java b/src/biz/bokhorst/xprivacy/XNetworkInfo.java index 9eacb9cd1..41f8c42b9 100644 --- a/src/biz/bokhorst/xprivacy/XNetworkInfo.java +++ b/src/biz/bokhorst/xprivacy/XNetworkInfo.java @@ -4,6 +4,7 @@ import java.util.List; import android.net.NetworkInfo; +import android.os.Binder; import android.util.Log; import de.robv.android.xposed.XC_MethodHook.MethodHookParam; @@ -28,7 +29,7 @@ public String getClassName() { // http://developer.android.com/reference/android/net/NetworkInfo.html private enum Methods { - getDetailedState, getState, isConnected, isConnectedOrConnecting + getDetailedState, getExtraInfo, getState, isConnected, isConnectedOrConnecting }; public static List getInstances() { @@ -48,6 +49,9 @@ protected void after(MethodHookParam param) throws Throwable { if (mMethod == Methods.getDetailedState) { if (param.getResult() != null && isRestricted(param)) param.setResult(NetworkInfo.DetailedState.DISCONNECTED); + } else if (mMethod == Methods.getExtraInfo) { + if (param.getResult() != null && isRestricted(param)) + param.setResult(PrivacyManager.getDefacedProp(Binder.getCallingUid(), "ExtraInfo")); } else if (mMethod == Methods.getState) { if (param.getResult() != null && isRestricted(param)) param.setResult(NetworkInfo.State.DISCONNECTED);