Skip to content

Commit bd4abf4

Browse files
committed
Additional Notification models
1 parent a9757fb commit bd4abf4

File tree

2 files changed

+136
-2
lines changed

2 files changed

+136
-2
lines changed

java/ql/lib/semmle/code/java/frameworks/android/Notifications.qll

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,11 @@ private class NotificationBuildersSummaryModels extends SummaryModelCsv {
3232
"android.app;Notification$Builder;true;setExtras;;;Argument[0];SyntheticField[android.content.Intent.extras] of Argument[-1];value",
3333
"android.app;Notification$Builder;true;setDeleteIntent;;;Argument[0];Argument[-1];taint",
3434
"android.app;Notification$Builder;true;setPublicVersion;;;Argument[0];Argument[-1];taint",
35+
"android.app;Notification$Style;true;build;;;Argument[-1];ReturnValue;taint",
36+
"android.app;Notification$BigPictureStyle;true;BigPictureStyle;(Builder);;Argument[0];Argument[-1];taint",
37+
"android.app;Notification$BigTextStyle;true;BigTextStyle;(Builder);;Argument[0];Argument[-1];taint",
38+
"android.app;Notification$InboxStyle;true;InboxStyle;(Builder);;Argument[0];Argument[-1];taint",
39+
"android.app;Notification$MediaStyle;true;MediaStyle;(Builder);;Argument[0];Argument[-1];taint",
3540
// Fluent models
3641
"android.app;Notification$Action$Builder;true;" +
3742
[
@@ -52,7 +57,18 @@ private class NotificationBuildersSummaryModels extends SummaryModelCsv {
5257
"setShortcutId", "setShowWhen", "setSmallIcon", "setSortKey", "setSound", "setStyle",
5358
"setSubText", "setTicker", "setTimeoutAfter", "setUsesChronometer", "setVibrate",
5459
"setVisibility", "setWhen"
55-
] + ";;;Argument[-1];ReturnValue;value"
60+
] + ";;;Argument[-1];ReturnValue;value",
61+
"android.app;Notification$BigPictureStyle;true;" +
62+
[
63+
"bigLargeIcon", "bigPicture", "setBigContentTitle", "setContentDescription",
64+
"setSummaryText", "showBigPictureWhenCollapsed"
65+
] + ";;;Argument[-1];ReturnValue;value",
66+
"android.app;Notification$BigTextStyle;true;" +
67+
["bigText", "setBigContentTitle", "setSummaryText"] + ";;;Argument[-1];ReturnValue;value",
68+
"android.app;Notification$InboxStyle;true;" +
69+
["addLine", "setBigContentTitle", "setSummaryText"] + ";;;Argument[-1];ReturnValue;value",
70+
"android.app;Notification$MediaStyle;true;" +
71+
["setMediaSession", "setShowActionsInCompactView"] + ";;;Argument[-1];ReturnValue;value"
5672
]
5773
}
5874
}

java/ql/test/library-tests/frameworks/android/notification/Test.java

Lines changed: 119 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -695,7 +695,125 @@ public void test() throws Exception {
695695
out = in.setWhen(0L);
696696
sink(out); // $ hasValueFlow
697697
}
698-
698+
{
699+
// "android.app;Notification$Style;true;build;;;Argument[-1];ReturnValue;taint"
700+
Notification out = null;
701+
Notification.Style in = (Notification.Style) source();
702+
out = in.build();
703+
sink(out); // $ hasTaintFlow
704+
}
705+
{
706+
// "android.app;Notification$BigPictureStyle;true;BigPictureStyle;(Builder);;Argument[0];Argument[-1];taint"
707+
Notification.BigPictureStyle out = null;
708+
Notification.Builder in = (Notification.Builder) source();
709+
out = new Notification.BigPictureStyle(in);
710+
sink(out); // $ hasTaintFlow
711+
}
712+
{
713+
// "android.app;Notification$BigPictureStyle;true;bigLargeIcon;;;Argument[-1];ReturnValue;value"
714+
Notification.BigPictureStyle in = (Notification.BigPictureStyle) source();
715+
Notification.BigPictureStyle out = in.bigLargeIcon((Icon) null);
716+
sink(out); // $ hasValueFlow
717+
}
718+
{
719+
// "android.app;Notification$BigPictureStyle;true;bigPicture;;;Argument[-1];ReturnValue;value"
720+
Notification.BigPictureStyle in = (Notification.BigPictureStyle) source();
721+
Notification.BigPictureStyle out = in.bigPicture((Bitmap) null);
722+
sink(out); // $ hasValueFlow
723+
}
724+
{
725+
// "android.app;Notification$BigPictureStyle;true;setBigContentTitle;;;Argument[-1];ReturnValue;value"
726+
Notification.BigPictureStyle in = (Notification.BigPictureStyle) source();
727+
Notification.BigPictureStyle out = in.setBigContentTitle(null);
728+
sink(out); // $ hasValueFlow
729+
}
730+
{
731+
// "android.app;Notification$BigPictureStyle;true;setContentDescription;;;Argument[-1];ReturnValue;value"
732+
Notification.BigPictureStyle in = (Notification.BigPictureStyle) source();
733+
Notification.BigPictureStyle out = in.setContentDescription(null);
734+
sink(out); // $ hasValueFlow
735+
}
736+
{
737+
// "android.app;Notification$BigPictureStyle;true;setSummaryText;;;Argument[-1];ReturnValue;value"
738+
Notification.BigPictureStyle in = (Notification.BigPictureStyle) source();
739+
Notification.BigPictureStyle out = in.setSummaryText(null);
740+
sink(out); // $ hasValueFlow
741+
}
742+
{
743+
// "android.app;Notification$BigPictureStyle;true;showBigPictureWhenCollapsed;;;Argument[-1];ReturnValue;value"
744+
Notification.BigPictureStyle in = (Notification.BigPictureStyle) source();
745+
Notification.BigPictureStyle out = in.showBigPictureWhenCollapsed(false);
746+
sink(out); // $ hasValueFlow
747+
}
748+
{
749+
// "android.app;Notification$BigTextStyle;true;BigTextStyle;(Builder);;Argument[0];Argument[-1];taint"
750+
Notification.BigTextStyle out = null;
751+
Notification.Builder in = (Notification.Builder) source();
752+
out = new Notification.BigTextStyle(in);
753+
sink(out); // $ hasTaintFlow
754+
}
755+
{
756+
// "android.app;Notification$BigTextStyle;true;bigText;;;Argument[-1];ReturnValue;value"
757+
Notification.BigTextStyle in = (Notification.BigTextStyle) source();
758+
Notification.BigTextStyle out = in.bigText(null);
759+
sink(out); // $ hasValueFlow
760+
}
761+
{
762+
// "android.app;Notification$BigTextStyle;true;setBigContentTitle;;;Argument[-1];ReturnValue;value"
763+
Notification.BigTextStyle in = (Notification.BigTextStyle) source();
764+
Notification.BigTextStyle out = in.setBigContentTitle(null);
765+
sink(out); // $ hasValueFlow
766+
}
767+
{
768+
// "android.app;Notification$BigTextStyle;true;setSummaryText;;;Argument[-1];ReturnValue;value"
769+
Notification.BigTextStyle in = (Notification.BigTextStyle) source();
770+
Notification.BigTextStyle out = in.setSummaryText(null);
771+
sink(out); // $ hasValueFlow
772+
}
773+
{
774+
// "android.app;Notification$InboxStyle;true;InboxStyle;(Builder);;Argument[0];Argument[-1];taint"
775+
Notification.InboxStyle out = null;
776+
Notification.Builder in = (Notification.Builder) source();
777+
out = new Notification.InboxStyle(in);
778+
sink(out); // $ hasTaintFlow
779+
}
780+
{
781+
// "android.app;Notification$InboxStyle;true;addLine;;;Argument[-1];ReturnValue;value"
782+
Notification.InboxStyle in = (Notification.InboxStyle) source();
783+
Notification.InboxStyle out = in.addLine(null);
784+
sink(out); // $ hasValueFlow
785+
}
786+
{
787+
// "android.app;Notification$InboxStyle;true;setBigContentTitle;;;Argument[-1];ReturnValue;value"
788+
Notification.InboxStyle in = (Notification.InboxStyle) source();
789+
Notification.InboxStyle out = in.setBigContentTitle(null);
790+
sink(out); // $ hasValueFlow
791+
}
792+
{
793+
// "android.app;Notification$InboxStyle;true;setSummaryText;;;Argument[-1];ReturnValue;value"
794+
Notification.InboxStyle in = (Notification.InboxStyle) source();
795+
Notification.InboxStyle out = in.setSummaryText(null);
796+
sink(out); // $ hasValueFlow
797+
}
798+
{
799+
// "android.app;Notification$MediaStyle;true;MediaStyle;(Builder);;Argument[0];Argument[-1];taint"
800+
Notification.MediaStyle out = null;
801+
Notification.Builder in = (Notification.Builder) source();
802+
out = new Notification.MediaStyle(in);
803+
sink(out); // $ hasTaintFlow
804+
}
805+
{
806+
// "android.app;Notification$MediaStyle;true;setMediaSession;;;Argument[-1];ReturnValue;value"
807+
Notification.MediaStyle in = (Notification.MediaStyle) source();
808+
Notification.MediaStyle out = in.setMediaSession(null);
809+
sink(out); // $ hasValueFlow
810+
}
811+
{
812+
// "android.app;Notification$MediaStyle;true;setShowActionsInCompactView;;;Argument[-1];ReturnValue;value"
813+
Notification.MediaStyle in = (Notification.MediaStyle) source();
814+
Notification.MediaStyle out = in.setShowActionsInCompactView(null);
815+
sink(out); // $ hasValueFlow
816+
}
699817
}
700818

701819
}

0 commit comments

Comments
 (0)