mirror of
https://github.com/github/codeql.git
synced 2025-12-23 20:26:32 +01:00
Add summaries for ContentResolver and adjacent classes
This commit is contained in:
@@ -53,7 +53,64 @@ private class SummaryModels extends SummaryModelCsv {
|
|||||||
"android.content;ContentValues;false;put;;;Argument[0];Argument[-1].MapKey;value;manual",
|
"android.content;ContentValues;false;put;;;Argument[0];Argument[-1].MapKey;value;manual",
|
||||||
"android.content;ContentValues;false;put;;;Argument[1];Argument[-1].MapValue;value;manual",
|
"android.content;ContentValues;false;put;;;Argument[1];Argument[-1].MapValue;value;manual",
|
||||||
"android.content;ContentValues;false;putAll;;;Argument[0].MapKey;Argument[-1].MapKey;value;manual",
|
"android.content;ContentValues;false;putAll;;;Argument[0].MapKey;Argument[-1].MapKey;value;manual",
|
||||||
"android.content;ContentValues;false;putAll;;;Argument[0].MapValue;Argument[-1].MapValue;value;manual"
|
"android.content;ContentValues;false;putAll;;;Argument[0].MapValue;Argument[-1].MapValue;value;manual",
|
||||||
|
"android.content;ContentResolver;true;acquireContentProviderClient;;;Argument[0];ReturnValue;taint;manual",
|
||||||
|
"android.content;ContentResolver;true;acquireUnstableContentProviderClient;;;Argument[0];ReturnValue;taint;manual",
|
||||||
|
"android.content;ContentResolver;true;acquireUnstableContentProviderClient;;;Argument[0];ReturnValue;taint;manual",
|
||||||
|
"android.content;ContentResolver;true;applyBatch;;;Argument[1];ReturnValue;taint;manual",
|
||||||
|
"android.content;ContentResolver;true;call;;;Argument[0];ReturnValue;taint;manual",
|
||||||
|
"android.content;ContentResolver;true;canonicalize;;;Argument[0];ReturnValue;taint;manual",
|
||||||
|
"android.content;ContentResolver;true;getStreamTypes;;;Argument[0];ReturnValue;taint;manual",
|
||||||
|
"android.content;ContentResolver;true;getType;;;Argument[0];ReturnValue;taint;manual",
|
||||||
|
"android.content;ContentResolver;true;insert;;;Argument[0];ReturnValue;taint;manual",
|
||||||
|
"android.content;ContentResolver;true;query;;;Argument[0];ReturnValue;taint;manual",
|
||||||
|
"android.content;ContentResolver;true;uncanonicalize;;;Argument[0];ReturnValue;taint;manual",
|
||||||
|
"android.content;ContentResolver;true;wrap;;;Argument[0];ReturnValue;taint;manual",
|
||||||
|
// ContentProviderClient is tainted at its creation, not by its arguments
|
||||||
|
"android.content;ContentProviderClient;true;applyBatch;;;Argument[-1];ReturnValue;taint;manual",
|
||||||
|
"android.content;ContentProviderClient;true;call;;;Argument[-1];ReturnValue;taint;manual",
|
||||||
|
"android.content;ContentProviderClient;true;canonicalize;;;Argument[-1];ReturnValue;taint;manual",
|
||||||
|
"android.content;ContentProviderClient;true;getLocalContentProvider;;;Argument[-1];ReturnValue;taint;manual",
|
||||||
|
"android.content;ContentProviderClient;true;getStreamTypes;;;Argument[-1];ReturnValue;taint;manual",
|
||||||
|
"android.content;ContentProviderClient;true;insert;;;Argument[-1];ReturnValue;taint;manual",
|
||||||
|
"android.content;ContentProviderClient;true;query;;;Argument[-1];ReturnValue;taint;manual",
|
||||||
|
"android.content;ContentProviderClient;true;uncanonicalize;;;Argument[-1];ReturnValue;taint;manual",
|
||||||
|
"android.content;ContentProviderOperation;false;apply;;;Argument[-1];ReturnValue;taint;manual",
|
||||||
|
"android.content;ContentProviderOperation;false;apply;;;Argument[0];ReturnValue;taint;manual",
|
||||||
|
"android.content;ContentProviderOperation;false;getUri;;;Argument[-1];ReturnValue;taint;manual",
|
||||||
|
"android.content;ContentProviderOperation;false;newAssertQuery;;;Argument[0];ReturnValue;taint;manual",
|
||||||
|
"android.content;ContentProviderOperation;false;newCall;;;Argument[0];ReturnValue;taint;manual",
|
||||||
|
"android.content;ContentProviderOperation;false;newDelete;;;Argument[0];ReturnValue;taint;manual",
|
||||||
|
"android.content;ContentProviderOperation;false;newInsert;;;Argument[0];ReturnValue;taint;manual",
|
||||||
|
"android.content;ContentProviderOperation;false;newUpdate;;;Argument[0];ReturnValue;taint;manual",
|
||||||
|
"android.content;ContentProviderOperation;false;resolveExtrasBackReferences;;;Argument[0];ReturnValue;taint;manual",
|
||||||
|
"android.content;ContentProviderOperation;false;resolveSelectionArgsBackReferences;;;Argument[0];ReturnValue;taint;manual",
|
||||||
|
"android.content;ContentProviderOperation;false;resolveValueBackReferences;;;Argument[0];ReturnValue;taint;manual",
|
||||||
|
"android.content;ContentProviderOperation$Builder;false;build;;;Argument[-1];ReturnValue;taint;manual",
|
||||||
|
"android.content;ContentProviderOperation$Builder;false;withExceptionAllowed;;;Argument[-1];ReturnValue;value;manual",
|
||||||
|
"android.content;ContentProviderOperation$Builder;false;withExpectedCount;;;Argument[-1];ReturnValue;value;manual",
|
||||||
|
"android.content;ContentProviderOperation$Builder;false;withExtra;;;Argument[-1];ReturnValue;value;manual",
|
||||||
|
"android.content;ContentProviderOperation$Builder;false;withExtraBackReference;;;Argument[-1];ReturnValue;value;manual",
|
||||||
|
"android.content;ContentProviderOperation$Builder;false;withExtras;;;Argument[-1];ReturnValue;value;manual",
|
||||||
|
"android.content;ContentProviderOperation$Builder;false;withSelection;;;Argument[-1];ReturnValue;value;manual",
|
||||||
|
"android.content;ContentProviderOperation$Builder;false;withSelectionBackReference;;;Argument[-1];ReturnValue;value;manual",
|
||||||
|
"android.content;ContentProviderOperation$Builder;false;withValue;;;Argument[-1];ReturnValue;value;manual",
|
||||||
|
"android.content;ContentProviderOperation$Builder;false;withValueBackReference;;;Argument[-1];ReturnValue;value;manual",
|
||||||
|
"android.content;ContentProviderOperation$Builder;false;withValues;;;Argument[-1];ReturnValue;value;manual",
|
||||||
|
"android.content;ContentProviderOperation$Builder;false;withYieldAllowed;;;Argument[-1];ReturnValue;value;manual",
|
||||||
|
"android.content;ContentProviderResult;false;ContentProviderResult;(Uri);;Argument[0];Argument[-1].Field[android.content.ContentProviderResult.uri];value;manual",
|
||||||
|
"android.content;ContentProviderResult;false;ContentProviderResult;(Bundle);;Argument[0];Argument[-1].Field[android.content.ContentProviderResult.extras];value;manual",
|
||||||
|
"android.content;ContentProviderResult;false;ContentProviderResult;(Throwable);;Argument[0];Argument[-1].Field[android.content.ContentProviderResult.exception];value;manual",
|
||||||
|
"android.content;ContentProviderResult;false;ContentProviderResult;(Parcel);;Argument[0];Argument[-1];taint;manual",
|
||||||
|
"android.database;Cursor;true;copyStringToBuffer;;;Argument[-1];Argument[1];taint;manual",
|
||||||
|
"android.database;Cursor;true;getBlob;;;Argument[-1];ReturnValue;taint;manual",
|
||||||
|
"android.database;Cursor;true;getColumnName;;;Argument[-1];ReturnValue;taint;manual",
|
||||||
|
"android.database;Cursor;true;getColumnNames;;;Argument[-1];ReturnValue;taint;manual",
|
||||||
|
"android.database;Cursor;true;getExtras;;;Argument[-1];ReturnValue;taint;manual",
|
||||||
|
"android.database;Cursor;true;getNotificationUri;;;Argument[-1];ReturnValue;taint;manual",
|
||||||
|
"android.database;Cursor;true;getNotificationUris;;;Argument[-1];ReturnValue;taint;manual",
|
||||||
|
"android.database;Cursor;true;getString;;;Argument[-1];ReturnValue;taint;manual",
|
||||||
|
"android.database;Cursor;true;respond;;;Argument[-1];ReturnValue;taint;manual"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,697 @@
|
|||||||
|
package generatedtest;
|
||||||
|
|
||||||
|
import android.content.ContentProvider;
|
||||||
|
import android.content.ContentProviderClient;
|
||||||
|
import android.content.ContentProviderOperation;
|
||||||
|
import android.content.ContentProviderResult;
|
||||||
|
import android.content.ContentResolver;
|
||||||
|
import android.content.ContentValues;
|
||||||
|
import android.database.CharArrayBuffer;
|
||||||
|
import android.database.Cursor;
|
||||||
|
import android.net.Uri;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.os.Parcel;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
// Test case generated by GenerateFlowTestCase.ql
|
||||||
|
public class Test {
|
||||||
|
|
||||||
|
Object getMapKeyDefault(Object container) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
Object getMapValueDefault(Object container) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
Object newWithMapKeyDefault(Object element) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
Object newWithMapValueDefault(Object element) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
Object source() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sink(Object o) {}
|
||||||
|
|
||||||
|
public void test() throws Exception {
|
||||||
|
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderClient;true;applyBatch;;;Argument[-1];ReturnValue;taint;manual"
|
||||||
|
ContentProviderResult[] out = null;
|
||||||
|
ContentProviderClient in = (ContentProviderClient) source();
|
||||||
|
out = in.applyBatch(null);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderClient;true;applyBatch;;;Argument[-1];ReturnValue;taint;manual"
|
||||||
|
ContentProviderResult[] out = null;
|
||||||
|
ContentProviderClient in = (ContentProviderClient) source();
|
||||||
|
out = in.applyBatch(null, null);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderClient;true;call;;;Argument[-1];ReturnValue;taint;manual"
|
||||||
|
Bundle out = null;
|
||||||
|
ContentProviderClient in = (ContentProviderClient) source();
|
||||||
|
out = in.call(null, null, null);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderClient;true;call;;;Argument[-1];ReturnValue;taint;manual"
|
||||||
|
Bundle out = null;
|
||||||
|
ContentProviderClient in = (ContentProviderClient) source();
|
||||||
|
out = in.call(null, null, null, null);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderClient;true;canonicalize;;;Argument[-1];ReturnValue;taint;manual"
|
||||||
|
Uri out = null;
|
||||||
|
ContentProviderClient in = (ContentProviderClient) source();
|
||||||
|
out = in.canonicalize(null);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderClient;true;getLocalContentProvider;;;Argument[-1];ReturnValue;taint;manual"
|
||||||
|
ContentProvider out = null;
|
||||||
|
ContentProviderClient in = (ContentProviderClient) source();
|
||||||
|
out = in.getLocalContentProvider();
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderClient;true;getStreamTypes;;;Argument[-1];ReturnValue;taint;manual"
|
||||||
|
String[] out = null;
|
||||||
|
ContentProviderClient in = (ContentProviderClient) source();
|
||||||
|
out = in.getStreamTypes(null, null);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderClient;true;insert;;;Argument[-1];ReturnValue;taint;manual"
|
||||||
|
Uri out = null;
|
||||||
|
ContentProviderClient in = (ContentProviderClient) source();
|
||||||
|
out = in.insert(null, null);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderClient;true;insert;;;Argument[-1];ReturnValue;taint;manual"
|
||||||
|
Uri out = null;
|
||||||
|
ContentProviderClient in = (ContentProviderClient) source();
|
||||||
|
out = in.insert(null, null, null);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderClient;true;query;;;Argument[-1];ReturnValue;taint;manual"
|
||||||
|
Cursor out = null;
|
||||||
|
ContentProviderClient in = (ContentProviderClient) source();
|
||||||
|
out = in.query(null, null, null, null);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderClient;true;query;;;Argument[-1];ReturnValue;taint;manual"
|
||||||
|
Cursor out = null;
|
||||||
|
ContentProviderClient in = (ContentProviderClient) source();
|
||||||
|
out = in.query(null, null, null, null, null);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderClient;true;query;;;Argument[-1];ReturnValue;taint;manual"
|
||||||
|
Cursor out = null;
|
||||||
|
ContentProviderClient in = (ContentProviderClient) source();
|
||||||
|
out = in.query(null, null, null, null, null, null);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderClient;true;uncanonicalize;;;Argument[-1];ReturnValue;taint;manual"
|
||||||
|
Uri out = null;
|
||||||
|
ContentProviderClient in = (ContentProviderClient) source();
|
||||||
|
out = in.uncanonicalize(null);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderOperation$Builder;false;build;;;Argument[-1];ReturnValue;taint;manual"
|
||||||
|
ContentProviderOperation out = null;
|
||||||
|
ContentProviderOperation.Builder in = (ContentProviderOperation.Builder) source();
|
||||||
|
out = in.build();
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderOperation$Builder;false;withExceptionAllowed;;;Argument[-1];ReturnValue;value;manual"
|
||||||
|
ContentProviderOperation.Builder out = null;
|
||||||
|
ContentProviderOperation.Builder in = (ContentProviderOperation.Builder) source();
|
||||||
|
out = in.withExceptionAllowed(false);
|
||||||
|
sink(out); // $ hasValueFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderOperation$Builder;false;withExpectedCount;;;Argument[-1];ReturnValue;value;manual"
|
||||||
|
ContentProviderOperation.Builder out = null;
|
||||||
|
ContentProviderOperation.Builder in = (ContentProviderOperation.Builder) source();
|
||||||
|
out = in.withExpectedCount(0);
|
||||||
|
sink(out); // $ hasValueFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderOperation$Builder;false;withExtra;;;Argument[-1];ReturnValue;value;manual"
|
||||||
|
ContentProviderOperation.Builder out = null;
|
||||||
|
ContentProviderOperation.Builder in = (ContentProviderOperation.Builder) source();
|
||||||
|
out = in.withExtra(null, null);
|
||||||
|
sink(out); // $ hasValueFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderOperation$Builder;false;withExtraBackReference;;;Argument[-1];ReturnValue;value;manual"
|
||||||
|
ContentProviderOperation.Builder out = null;
|
||||||
|
ContentProviderOperation.Builder in = (ContentProviderOperation.Builder) source();
|
||||||
|
out = in.withExtraBackReference(null, 0);
|
||||||
|
sink(out); // $ hasValueFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderOperation$Builder;false;withExtraBackReference;;;Argument[-1];ReturnValue;value;manual"
|
||||||
|
ContentProviderOperation.Builder out = null;
|
||||||
|
ContentProviderOperation.Builder in = (ContentProviderOperation.Builder) source();
|
||||||
|
out = in.withExtraBackReference(null, 0, null);
|
||||||
|
sink(out); // $ hasValueFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderOperation$Builder;false;withExtras;;;Argument[-1];ReturnValue;value;manual"
|
||||||
|
ContentProviderOperation.Builder out = null;
|
||||||
|
ContentProviderOperation.Builder in = (ContentProviderOperation.Builder) source();
|
||||||
|
out = in.withExtras(null);
|
||||||
|
sink(out); // $ hasValueFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderOperation$Builder;false;withSelection;;;Argument[-1];ReturnValue;value;manual"
|
||||||
|
ContentProviderOperation.Builder out = null;
|
||||||
|
ContentProviderOperation.Builder in = (ContentProviderOperation.Builder) source();
|
||||||
|
out = in.withSelection(null, null);
|
||||||
|
sink(out); // $ hasValueFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderOperation$Builder;false;withSelectionBackReference;;;Argument[-1];ReturnValue;value;manual"
|
||||||
|
ContentProviderOperation.Builder out = null;
|
||||||
|
ContentProviderOperation.Builder in = (ContentProviderOperation.Builder) source();
|
||||||
|
out = in.withSelectionBackReference(0, 0);
|
||||||
|
sink(out); // $ hasValueFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderOperation$Builder;false;withSelectionBackReference;;;Argument[-1];ReturnValue;value;manual"
|
||||||
|
ContentProviderOperation.Builder out = null;
|
||||||
|
ContentProviderOperation.Builder in = (ContentProviderOperation.Builder) source();
|
||||||
|
out = in.withSelectionBackReference(0, 0, null);
|
||||||
|
sink(out); // $ hasValueFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderOperation$Builder;false;withValue;;;Argument[-1];ReturnValue;value;manual"
|
||||||
|
ContentProviderOperation.Builder out = null;
|
||||||
|
ContentProviderOperation.Builder in = (ContentProviderOperation.Builder) source();
|
||||||
|
out = in.withValue(null, null);
|
||||||
|
sink(out); // $ hasValueFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderOperation$Builder;false;withValueBackReference;;;Argument[-1];ReturnValue;value;manual"
|
||||||
|
ContentProviderOperation.Builder out = null;
|
||||||
|
ContentProviderOperation.Builder in = (ContentProviderOperation.Builder) source();
|
||||||
|
out = in.withValueBackReference(null, 0);
|
||||||
|
sink(out); // $ hasValueFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderOperation$Builder;false;withValueBackReference;;;Argument[-1];ReturnValue;value;manual"
|
||||||
|
ContentProviderOperation.Builder out = null;
|
||||||
|
ContentProviderOperation.Builder in = (ContentProviderOperation.Builder) source();
|
||||||
|
out = in.withValueBackReference(null, 0, null);
|
||||||
|
sink(out); // $ hasValueFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderOperation$Builder;false;withValues;;;Argument[-1];ReturnValue;value;manual"
|
||||||
|
ContentProviderOperation.Builder out = null;
|
||||||
|
ContentProviderOperation.Builder in = (ContentProviderOperation.Builder) source();
|
||||||
|
out = in.withValues(null);
|
||||||
|
sink(out); // $ hasValueFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderOperation$Builder;false;withYieldAllowed;;;Argument[-1];ReturnValue;value;manual"
|
||||||
|
ContentProviderOperation.Builder out = null;
|
||||||
|
ContentProviderOperation.Builder in = (ContentProviderOperation.Builder) source();
|
||||||
|
out = in.withYieldAllowed(false);
|
||||||
|
sink(out); // $ hasValueFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderOperation;false;apply;;;Argument[-1];ReturnValue;taint;manual"
|
||||||
|
ContentProviderResult out = null;
|
||||||
|
ContentProviderOperation in = (ContentProviderOperation) source();
|
||||||
|
out = in.apply(null, null, 0);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderOperation;false;apply;;;Argument[0];ReturnValue;taint;manual"
|
||||||
|
ContentProviderResult out = null;
|
||||||
|
ContentProvider in = (ContentProvider) source();
|
||||||
|
ContentProviderOperation instance = null;
|
||||||
|
out = instance.apply(in, null, 0);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderOperation;false;getUri;;;Argument[-1];ReturnValue;taint;manual"
|
||||||
|
Uri out = null;
|
||||||
|
ContentProviderOperation in = (ContentProviderOperation) source();
|
||||||
|
out = in.getUri();
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderOperation;false;newAssertQuery;;;Argument[0];ReturnValue;taint;manual"
|
||||||
|
ContentProviderOperation.Builder out = null;
|
||||||
|
Uri in = (Uri) source();
|
||||||
|
out = ContentProviderOperation.newAssertQuery(in);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderOperation;false;newCall;;;Argument[0];ReturnValue;taint;manual"
|
||||||
|
ContentProviderOperation.Builder out = null;
|
||||||
|
Uri in = (Uri) source();
|
||||||
|
out = ContentProviderOperation.newCall(in, null, null);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderOperation;false;newDelete;;;Argument[0];ReturnValue;taint;manual"
|
||||||
|
ContentProviderOperation.Builder out = null;
|
||||||
|
Uri in = (Uri) source();
|
||||||
|
out = ContentProviderOperation.newDelete(in);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderOperation;false;newInsert;;;Argument[0];ReturnValue;taint;manual"
|
||||||
|
ContentProviderOperation.Builder out = null;
|
||||||
|
Uri in = (Uri) source();
|
||||||
|
out = ContentProviderOperation.newInsert(in);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderOperation;false;newUpdate;;;Argument[0];ReturnValue;taint;manual"
|
||||||
|
ContentProviderOperation.Builder out = null;
|
||||||
|
Uri in = (Uri) source();
|
||||||
|
out = ContentProviderOperation.newUpdate(in);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderOperation;false;resolveExtrasBackReferences;;;Argument[0];ReturnValue;taint;manual"
|
||||||
|
Bundle out = null;
|
||||||
|
ContentProviderResult[] in = (ContentProviderResult[]) source();
|
||||||
|
ContentProviderOperation instance = null;
|
||||||
|
out = instance.resolveExtrasBackReferences(in, 0);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderOperation;false;resolveSelectionArgsBackReferences;;;Argument[0];ReturnValue;taint;manual"
|
||||||
|
String[] out = null;
|
||||||
|
ContentProviderResult[] in = (ContentProviderResult[]) source();
|
||||||
|
ContentProviderOperation instance = null;
|
||||||
|
out = instance.resolveSelectionArgsBackReferences(in, 0);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderOperation;false;resolveValueBackReferences;;;Argument[0];ReturnValue;taint;manual"
|
||||||
|
ContentValues out = null;
|
||||||
|
ContentProviderResult[] in = (ContentProviderResult[]) source();
|
||||||
|
ContentProviderOperation instance = null;
|
||||||
|
out = instance.resolveValueBackReferences(in, 0);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderResult;false;ContentProviderResult;(Bundle);;Argument[0];Argument[-1].Field[android.content.ContentProviderResult.extras];value;manual"
|
||||||
|
ContentProviderResult out = null;
|
||||||
|
Bundle in = (Bundle) source();
|
||||||
|
out = new ContentProviderResult(in);
|
||||||
|
sink(out.extras); // $ hasValueFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderResult;false;ContentProviderResult;(Parcel);;Argument[0];Argument[-1];taint;manual"
|
||||||
|
ContentProviderResult out = null;
|
||||||
|
Parcel in = (Parcel) source();
|
||||||
|
out = new ContentProviderResult(in);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderResult;false;ContentProviderResult;(Throwable);;Argument[0];Argument[-1].Field[android.content.ContentProviderResult.exception];value;manual"
|
||||||
|
ContentProviderResult out = null;
|
||||||
|
Throwable in = (Throwable) source();
|
||||||
|
out = new ContentProviderResult(in);
|
||||||
|
sink(out.exception); // $ hasValueFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentProviderResult;false;ContentProviderResult;(Uri);;Argument[0];Argument[-1].Field[android.content.ContentProviderResult.uri];value;manual"
|
||||||
|
ContentProviderResult out = null;
|
||||||
|
Uri in = (Uri) source();
|
||||||
|
out = new ContentProviderResult(in);
|
||||||
|
sink(out.uri); // $ hasValueFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentResolver;true;acquireContentProviderClient;;;Argument[0];ReturnValue;taint;manual"
|
||||||
|
ContentProviderClient out = null;
|
||||||
|
String in = (String) source();
|
||||||
|
ContentResolver instance = null;
|
||||||
|
out = instance.acquireContentProviderClient(in);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentResolver;true;acquireContentProviderClient;;;Argument[0];ReturnValue;taint;manual"
|
||||||
|
ContentProviderClient out = null;
|
||||||
|
Uri in = (Uri) source();
|
||||||
|
ContentResolver instance = null;
|
||||||
|
out = instance.acquireContentProviderClient(in);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentResolver;true;acquireUnstableContentProviderClient;;;Argument[0];ReturnValue;taint;manual"
|
||||||
|
ContentProviderClient out = null;
|
||||||
|
String in = (String) source();
|
||||||
|
ContentResolver instance = null;
|
||||||
|
out = instance.acquireUnstableContentProviderClient(in);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentResolver;true;acquireUnstableContentProviderClient;;;Argument[0];ReturnValue;taint;manual"
|
||||||
|
ContentProviderClient out = null;
|
||||||
|
Uri in = (Uri) source();
|
||||||
|
ContentResolver instance = null;
|
||||||
|
out = instance.acquireUnstableContentProviderClient(in);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentResolver;true;applyBatch;;;Argument[1];ReturnValue;taint;manual"
|
||||||
|
ContentProviderResult[] out = null;
|
||||||
|
ArrayList in = (ArrayList) source();
|
||||||
|
ContentResolver instance = null;
|
||||||
|
out = instance.applyBatch(null, in);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentResolver;true;call;;;Argument[0];ReturnValue;taint;manual"
|
||||||
|
Bundle out = null;
|
||||||
|
String in = (String) source();
|
||||||
|
ContentResolver instance = null;
|
||||||
|
out = instance.call(in, (String) null, (String) null, (Bundle) null);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentResolver;true;call;;;Argument[0];ReturnValue;taint;manual"
|
||||||
|
Bundle out = null;
|
||||||
|
Uri in = (Uri) source();
|
||||||
|
ContentResolver instance = null;
|
||||||
|
out = instance.call(in, (String) null, (String) null, (Bundle) null);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentResolver;true;canonicalize;;;Argument[0];ReturnValue;taint;manual"
|
||||||
|
Uri out = null;
|
||||||
|
Uri in = (Uri) source();
|
||||||
|
ContentResolver instance = null;
|
||||||
|
out = instance.canonicalize(in);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentResolver;true;getStreamTypes;;;Argument[0];ReturnValue;taint;manual"
|
||||||
|
String[] out = null;
|
||||||
|
Uri in = (Uri) source();
|
||||||
|
ContentResolver instance = null;
|
||||||
|
out = instance.getStreamTypes(in, null);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentResolver;true;getType;;;Argument[0];ReturnValue;taint;manual"
|
||||||
|
String out = null;
|
||||||
|
Uri in = (Uri) source();
|
||||||
|
ContentResolver instance = null;
|
||||||
|
out = instance.getType(in);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentResolver;true;insert;;;Argument[0];ReturnValue;taint;manual"
|
||||||
|
Uri out = null;
|
||||||
|
Uri in = (Uri) source();
|
||||||
|
ContentResolver instance = null;
|
||||||
|
out = instance.insert(in, null);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentResolver;true;insert;;;Argument[0];ReturnValue;taint;manual"
|
||||||
|
Uri out = null;
|
||||||
|
Uri in = (Uri) source();
|
||||||
|
ContentResolver instance = null;
|
||||||
|
out = instance.insert(in, null, null);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentResolver;true;query;;;Argument[0];ReturnValue;taint;manual"
|
||||||
|
Cursor out = null;
|
||||||
|
Uri in = (Uri) source();
|
||||||
|
ContentResolver instance = null;
|
||||||
|
out = instance.query(in, null, null, null);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentResolver;true;query;;;Argument[0];ReturnValue;taint;manual"
|
||||||
|
Cursor out = null;
|
||||||
|
Uri in = (Uri) source();
|
||||||
|
ContentResolver instance = null;
|
||||||
|
out = instance.query(in, null, null, null, null);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentResolver;true;query;;;Argument[0];ReturnValue;taint;manual"
|
||||||
|
Cursor out = null;
|
||||||
|
Uri in = (Uri) source();
|
||||||
|
ContentResolver instance = null;
|
||||||
|
out = instance.query(in, null, null, null, null, null);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentResolver;true;uncanonicalize;;;Argument[0];ReturnValue;taint;manual"
|
||||||
|
Uri out = null;
|
||||||
|
Uri in = (Uri) source();
|
||||||
|
ContentResolver instance = null;
|
||||||
|
out = instance.uncanonicalize(in);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentResolver;true;wrap;;;Argument[0];ReturnValue;taint;manual"
|
||||||
|
ContentResolver out = null;
|
||||||
|
ContentProvider in = (ContentProvider) source();
|
||||||
|
out = ContentResolver.wrap(in);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentResolver;true;wrap;;;Argument[0];ReturnValue;taint;manual"
|
||||||
|
ContentResolver out = null;
|
||||||
|
ContentProviderClient in = (ContentProviderClient) source();
|
||||||
|
out = ContentResolver.wrap(in);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentValues;false;put;;;Argument[0];Argument[-1].MapKey;value;manual"
|
||||||
|
ContentValues out = null;
|
||||||
|
String in = (String) source();
|
||||||
|
out.put(in, (Boolean) null);
|
||||||
|
sink(getMapKeyDefault(out)); // $ hasValueFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentValues;false;put;;;Argument[0];Argument[-1].MapKey;value;manual"
|
||||||
|
ContentValues out = null;
|
||||||
|
String in = (String) source();
|
||||||
|
out.put(in, (Byte) null);
|
||||||
|
sink(getMapKeyDefault(out)); // $ hasValueFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentValues;false;put;;;Argument[0];Argument[-1].MapKey;value;manual"
|
||||||
|
ContentValues out = null;
|
||||||
|
String in = (String) source();
|
||||||
|
out.put(in, (Double) null);
|
||||||
|
sink(getMapKeyDefault(out)); // $ hasValueFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentValues;false;put;;;Argument[0];Argument[-1].MapKey;value;manual"
|
||||||
|
ContentValues out = null;
|
||||||
|
String in = (String) source();
|
||||||
|
out.put(in, (Float) null);
|
||||||
|
sink(getMapKeyDefault(out)); // $ hasValueFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentValues;false;put;;;Argument[0];Argument[-1].MapKey;value;manual"
|
||||||
|
ContentValues out = null;
|
||||||
|
String in = (String) source();
|
||||||
|
out.put(in, (Integer) null);
|
||||||
|
sink(getMapKeyDefault(out)); // $ hasValueFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentValues;false;put;;;Argument[0];Argument[-1].MapKey;value;manual"
|
||||||
|
ContentValues out = null;
|
||||||
|
String in = (String) source();
|
||||||
|
out.put(in, (Long) null);
|
||||||
|
sink(getMapKeyDefault(out)); // $ hasValueFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentValues;false;put;;;Argument[0];Argument[-1].MapKey;value;manual"
|
||||||
|
ContentValues out = null;
|
||||||
|
String in = (String) source();
|
||||||
|
out.put(in, (Short) null);
|
||||||
|
sink(getMapKeyDefault(out)); // $ hasValueFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentValues;false;put;;;Argument[0];Argument[-1].MapKey;value;manual"
|
||||||
|
ContentValues out = null;
|
||||||
|
String in = (String) source();
|
||||||
|
out.put(in, (String) null);
|
||||||
|
sink(getMapKeyDefault(out)); // $ hasValueFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentValues;false;put;;;Argument[0];Argument[-1].MapKey;value;manual"
|
||||||
|
ContentValues out = null;
|
||||||
|
String in = (String) source();
|
||||||
|
out.put(in, (byte[]) null);
|
||||||
|
sink(getMapKeyDefault(out)); // $ hasValueFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentValues;false;put;;;Argument[1];Argument[-1].MapValue;value;manual"
|
||||||
|
ContentValues out = null;
|
||||||
|
Boolean in = (Boolean) source();
|
||||||
|
out.put((String) null, in);
|
||||||
|
sink(getMapValueDefault(out)); // $ hasValueFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentValues;false;put;;;Argument[1];Argument[-1].MapValue;value;manual"
|
||||||
|
ContentValues out = null;
|
||||||
|
Byte in = (Byte) source();
|
||||||
|
out.put((String) null, in);
|
||||||
|
sink(getMapValueDefault(out)); // $ hasValueFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentValues;false;put;;;Argument[1];Argument[-1].MapValue;value;manual"
|
||||||
|
ContentValues out = null;
|
||||||
|
Double in = (Double) source();
|
||||||
|
out.put((String) null, in);
|
||||||
|
sink(getMapValueDefault(out)); // $ hasValueFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentValues;false;put;;;Argument[1];Argument[-1].MapValue;value;manual"
|
||||||
|
ContentValues out = null;
|
||||||
|
Float in = (Float) source();
|
||||||
|
out.put((String) null, in);
|
||||||
|
sink(getMapValueDefault(out)); // $ hasValueFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentValues;false;put;;;Argument[1];Argument[-1].MapValue;value;manual"
|
||||||
|
ContentValues out = null;
|
||||||
|
Integer in = (Integer) source();
|
||||||
|
out.put((String) null, in);
|
||||||
|
sink(getMapValueDefault(out)); // $ hasValueFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentValues;false;put;;;Argument[1];Argument[-1].MapValue;value;manual"
|
||||||
|
ContentValues out = null;
|
||||||
|
Long in = (Long) source();
|
||||||
|
out.put((String) null, in);
|
||||||
|
sink(getMapValueDefault(out)); // $ hasValueFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentValues;false;put;;;Argument[1];Argument[-1].MapValue;value;manual"
|
||||||
|
ContentValues out = null;
|
||||||
|
Short in = (Short) source();
|
||||||
|
out.put((String) null, in);
|
||||||
|
sink(getMapValueDefault(out)); // $ hasValueFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentValues;false;put;;;Argument[1];Argument[-1].MapValue;value;manual"
|
||||||
|
ContentValues out = null;
|
||||||
|
String in = (String) source();
|
||||||
|
out.put((String) null, in);
|
||||||
|
sink(getMapValueDefault(out)); // $ hasValueFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentValues;false;put;;;Argument[1];Argument[-1].MapValue;value;manual"
|
||||||
|
ContentValues out = null;
|
||||||
|
byte[] in = (byte[]) source();
|
||||||
|
out.put((String) null, in);
|
||||||
|
sink(getMapValueDefault(out)); // $ hasValueFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentValues;false;putAll;;;Argument[0].MapKey;Argument[-1].MapKey;value;manual"
|
||||||
|
ContentValues out = null;
|
||||||
|
ContentValues in = (ContentValues) newWithMapKeyDefault(source());
|
||||||
|
out.putAll(in);
|
||||||
|
sink(getMapKeyDefault(out)); // $ hasValueFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.content;ContentValues;false;putAll;;;Argument[0].MapValue;Argument[-1].MapValue;value;manual"
|
||||||
|
ContentValues out = null;
|
||||||
|
ContentValues in = (ContentValues) newWithMapValueDefault(source());
|
||||||
|
out.putAll(in);
|
||||||
|
sink(getMapValueDefault(out)); // $ hasValueFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.database;Cursor;true;copyStringToBuffer;;;Argument[-1];Argument[1];taint;manual"
|
||||||
|
CharArrayBuffer out = null;
|
||||||
|
Cursor in = (Cursor) source();
|
||||||
|
in.copyStringToBuffer(0, out);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.database;Cursor;true;getBlob;;;Argument[-1];ReturnValue;taint;manual"
|
||||||
|
byte[] out = null;
|
||||||
|
Cursor in = (Cursor) source();
|
||||||
|
out = in.getBlob(0);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.database;Cursor;true;getColumnName;;;Argument[-1];ReturnValue;taint;manual"
|
||||||
|
String out = null;
|
||||||
|
Cursor in = (Cursor) source();
|
||||||
|
out = in.getColumnName(0);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.database;Cursor;true;getColumnNames;;;Argument[-1];ReturnValue;taint;manual"
|
||||||
|
String[] out = null;
|
||||||
|
Cursor in = (Cursor) source();
|
||||||
|
out = in.getColumnNames();
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.database;Cursor;true;getExtras;;;Argument[-1];ReturnValue;taint;manual"
|
||||||
|
Bundle out = null;
|
||||||
|
Cursor in = (Cursor) source();
|
||||||
|
out = in.getExtras();
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.database;Cursor;true;getNotificationUri;;;Argument[-1];ReturnValue;taint;manual"
|
||||||
|
Uri out = null;
|
||||||
|
Cursor in = (Cursor) source();
|
||||||
|
out = in.getNotificationUri();
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.database;Cursor;true;getNotificationUris;;;Argument[-1];ReturnValue;taint;manual"
|
||||||
|
List out = null;
|
||||||
|
Cursor in = (Cursor) source();
|
||||||
|
out = in.getNotificationUris();
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.database;Cursor;true;getString;;;Argument[-1];ReturnValue;taint;manual"
|
||||||
|
String out = null;
|
||||||
|
Cursor in = (Cursor) source();
|
||||||
|
out = in.getString(0);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// "android.database;Cursor;true;respond;;;Argument[-1];ReturnValue;taint;manual"
|
||||||
|
Bundle out = null;
|
||||||
|
Cursor in = (Cursor) source();
|
||||||
|
out = in.respond(null);
|
||||||
|
sink(out); // $ hasTaintFlow
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
//semmle-extractor-options: --javac-args -cp ${testdir}/../../../../stubs/google-android-9.0.0
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
import java
|
||||||
|
import TestUtilities.InlineFlowTest
|
||||||
|
|
||||||
|
class SummaryModelTest extends SummaryModelCsv {
|
||||||
|
override predicate row(string row) {
|
||||||
|
row =
|
||||||
|
[
|
||||||
|
//"package;type;overrides;name;signature;ext;inputspec;outputspec;kind",
|
||||||
|
"generatedtest;Test;false;newWithMapValueDefault;(Object);;Argument[0];ReturnValue.MapValue;value;manual",
|
||||||
|
"generatedtest;Test;false;newWithMapKeyDefault;(Object);;Argument[0];ReturnValue.MapKey;value;manual",
|
||||||
|
"generatedtest;Test;false;getMapValueDefault;(Object);;Argument[0].MapValue;ReturnValue;value;manual",
|
||||||
|
"generatedtest;Test;false;getMapKeyDefault;(Object);;Argument[0].MapKey;ReturnValue;value;manual"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user