mirror of
https://github.com/github/codeql.git
synced 2026-04-30 03:05:15 +02:00
Add okhttp tests
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.example.app"
|
||||
android:installLocation="auto"
|
||||
android:versionCode="1"
|
||||
android:versionName="0.1" >
|
||||
|
||||
<application android:networkSecurityConfig="@xml/NetworkSecurityConfig">
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
@@ -0,0 +1,17 @@
|
||||
import okhttp3.OkHttpClient;
|
||||
import okhttp3.CertificatePinner;
|
||||
import okhttp3.Request;
|
||||
|
||||
class Test{
|
||||
void test1() throws Exception {
|
||||
CertificatePinner certificatePinner = new CertificatePinner.Builder()
|
||||
.add("good.example.com", "sha256/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=")
|
||||
.build();
|
||||
OkHttpClient client = OkHttpClient.Builder()
|
||||
.certificatePinner(certificatePinner)
|
||||
.build();
|
||||
|
||||
client.newCall(new Request.Builder().url("https://good.example.com").build()).execute();
|
||||
client.newCall(new Request.Builder().url("https://bad.example.com").build()).execute(); // $hasUntrustedResult
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
// semmle-extractor-options: --javac-args -cp ${testdir}/../../../../../stubs/google-android-9.0.0:${testdir}/../../../../../stubs/okhttp-4.9.3
|
||||
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<network-security-config>
|
||||
|
||||
</network-security-config>
|
||||
@@ -0,0 +1,23 @@
|
||||
import java
|
||||
import TestUtilities.InlineExpectationsTest
|
||||
import semmle.code.java.security.AndroidCertificatePinningQuery
|
||||
|
||||
class Test extends InlineExpectationsTest {
|
||||
Test() { this = "AndroidMissingCertificatePinningTest" }
|
||||
|
||||
override string getARelevantTag() { result = ["hasNoTrustedResult", "hasUntrustedResult"] }
|
||||
|
||||
override predicate hasActualResult(Location loc, string el, string tag, string value) {
|
||||
exists(DataFlow::Node node |
|
||||
missingPinning(node) and
|
||||
loc = node.getLocation() and
|
||||
el = node.toString() and
|
||||
value = "" and
|
||||
(
|
||||
if exists(string x | trustedDomain(x))
|
||||
then tag = "hasUntrustedResult"
|
||||
else tag = "hasNoTrustedResult"
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user