Skip to content

Commit e729639

Browse files
committed
Moved Android manifest incomplete permission logic into library
1 parent dedd29e commit e729639

File tree

2 files changed

+16
-6
lines changed

2 files changed

+16
-6
lines changed

java/ql/lib/semmle/code/xml/AndroidManifest.qll

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,17 @@ class AndroidProviderXmlElement extends AndroidComponentXmlElement {
180180
attr.getValue() = "true"
181181
)
182182
}
183+
184+
/**
185+
* Holds if the provider element provides only `android:readPermission` or `android:writePermission`.
186+
*/
187+
predicate hasIncompletePermissions() {
188+
(
189+
this.getAnAttribute().(AndroidPermissionXmlAttribute).isWrite() or
190+
this.getAnAttribute().(AndroidPermissionXmlAttribute).isRead()
191+
) and
192+
not this.requiresPermissions()
193+
}
183194
}
184195

185196
/**

java/ql/src/Security/CWE/CWE-276/ContentProviderIncompletePermissions.ql

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,8 @@ import semmle.code.xml.AndroidManifest
1515

1616
from AndroidProviderXmlElement provider
1717
where
18-
(
19-
provider.getAnAttribute().(AndroidPermissionXmlAttribute).isWrite() or
20-
provider.getAnAttribute().(AndroidPermissionXmlAttribute).isRead()
21-
) and
22-
not provider.requiresPermissions()
23-
select provider, "Incomplete permissions"
18+
not provider.getFile().(AndroidManifestXmlFile).isInBuildDirectory() and
19+
provider.isExported() and
20+
provider.hasIncompletePermissions()
21+
select provider, "Exported provider $@ has incomplete permissions.", provider,
22+
provider.getResolvedComponentName()

0 commit comments

Comments
 (0)