Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ede4a8a9 authored by Cole Faust's avatar Cole Faust Committed by Gerrit Code Review
Browse files

Merge "Fix crash in RequiresPermissionChecker.java"

parents 30a38773 a5f2ae0d
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -412,11 +412,11 @@ public final class RequiresPermissionChecker extends BugChecker

    private static ParsedRequiresPermission parseRequiresPermissionRecursively(
            MethodInvocationTree tree, VisitorState state) {
        if (ENFORCE_VIA_CONTEXT.matches(tree, state)) {
        if (ENFORCE_VIA_CONTEXT.matches(tree, state) && tree.getArguments().size() > 0) {
            final ParsedRequiresPermission res = new ParsedRequiresPermission();
            res.allOf.add(String.valueOf(ASTHelpers.constValue(tree.getArguments().get(0))));
            return res;
        } else if (ENFORCE_VIA_CHECKER.matches(tree, state)) {
        } else if (ENFORCE_VIA_CHECKER.matches(tree, state) && tree.getArguments().size() > 1) {
            final ParsedRequiresPermission res = new ParsedRequiresPermission();
            res.allOf.add(String.valueOf(ASTHelpers.constValue(tree.getArguments().get(1))));
            return res;
+23 −0
Original line number Diff line number Diff line
@@ -415,4 +415,27 @@ public class RequiresPermissionCheckerTest {
                        "}")
                .doTest();
    }

    @Test
    public void testInvalidFunctions() {
        compilationHelper
                .addSourceFile("/android/annotation/RequiresPermission.java")
                .addSourceFile("/android/annotation/SuppressLint.java")
                .addSourceFile("/android/content/Context.java")
                .addSourceLines("Example.java",
                        "import android.annotation.RequiresPermission;",
                        "import android.annotation.SuppressLint;",
                        "import android.content.Context;",
                        "class Foo extends Context {",
                        "  private static final String RED = \"red\";",
                        "  public void checkPermission() {",
                        "  }",
                        "  @RequiresPermission(RED)",
                        "  // BUG: Diagnostic contains:",
                        "  public void exampleScoped(Context context) {",
                        "    checkPermission();",
                        "  }",
                        "}")
                .doTest();
    }
}