@Override public void visitElement(@NonNull XmlContext context, @NonNull Element element) { String tag = element.getTagName(); if (tag.equals(TAG_SERVICE)) { checkService(context, element); } else if (tag.equals(TAG_GRANT_PERMISSION)) { checkGrantPermission(context, element); } else if (tag.equals(TAG_PROVIDER)) { checkProvider(context, element); } else if (tag.equals(TAG_RECEIVER)) { checkReceiver(context, element); } }
private static void checkReceiver(XmlContext context, Element element) { if (getExported(element) && isUnprotectedByPermission(element) && !isStandardReceiver(element)) { // No declared permission for this exported receiver: complain context.report(EXPORTED_RECEIVER, element, context.getLocation(element), "Exported receiver does not require permission"); } }
private static void checkService(XmlContext context, Element element) { if (getExported(element) && isUnprotectedByPermission(element) && !isWearableBindListener(element)) { // No declared permission for this exported service: complain context.report(EXPORTED_SERVICE, element, context.getLocation(element), "Exported service does not require permission"); } }
@Override public void visitElement(Context context, Element element) { String tag = element.getTagName(); if (tag.equals(TAG_SERVICE)) { checkService(context, element); } else if (tag.equals(TAG_GRANT_PERMISSION)) { checkGrantPermission(context, element); } }
private static void checkService(XmlContext context, Element element) { if (getExported(element) && isUnprotectedByPermission(element) && !isWearableListenerServiceAction(element)) { // No declared permission for this exported service: complain context.report(EXPORTED_SERVICE, element, context.getLocation(element), "Exported service does not require permission"); } }
@Override public void visitElement(@NonNull XmlContext context, @NonNull Element element) { if (SecurityDetector.getExported(element)) { String fqcn = getFqcn(element); if (fqcn != null) { if (fqcn.equals(PREFERENCE_ACTIVITY) && !context.getDriver().isSuppressed(context, ISSUE, element)) { String message = "`PreferenceActivity` should not be exported"; context.report(ISSUE, context.getLocation(element), message); } mExportedActivities.put(fqcn, context.createLocationHandle(element)); } } }
@Override public void visitElement(@NonNull XmlContext context, @NonNull Element element) { if (SecurityDetector.getExported(element)) { String fqcn = getFqcn(element); if (fqcn != null) { if (fqcn.equals(PREFERENCE_ACTIVITY) && !context.getDriver().isSuppressed(context, ISSUE, element)) { String message = "`PreferenceActivity` should not be exported"; context.report(ISSUE, element, context.getLocation(element), message); } mExportedActivities.put(fqcn, context.createLocationHandle(element)); } } }
@Override public void visitElement(@NonNull XmlContext context, @NonNull Element element) { String tag = element.getTagName(); if (tag.equals(TAG_SERVICE)) { checkService(context, element); } else if (tag.equals(TAG_GRANT_PERMISSION)) { checkGrantPermission(context, element); } else if (tag.equals(TAG_PROVIDER)) { checkProvider(context, element); } else if (tag.equals(TAG_RECEIVER)) { checkReceiver(context, element); } }
private static void checkReceiver(XmlContext context, Element element) { if (getExported(element) && isUnprotectedByPermission(element) && !isStandardReceiver(element)) { // No declared permission for this exported receiver: complain context.report(EXPORTED_RECEIVER, element, context.getLocation(element), "Exported receiver does not require permission"); } }