Skip to content

Commit 3065ccd

Browse files
authored
Merge pull request #48 from LeanBitLab/security-fix-pending-intent-8744115456617007643
🔒 [security fix] Use immutable PendingIntent without redundant update flag
2 parents 47dbcfd + 70fb5c3 commit 3065ccd

1 file changed

Lines changed: 14 additions & 14 deletions

File tree

app/src/main/java/com/leanbitlab/lwidget/AwidgetProvider.kt

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ class AwidgetProvider : AppWidgetProvider() {
135135
context,
136136
500,
137137
intent,
138-
android.app.PendingIntent.FLAG_UPDATE_CURRENT or android.app.PendingIntent.FLAG_IMMUTABLE
138+
android.app.PendingIntent.FLAG_IMMUTABLE
139139
)
140140

141141
val prefs = context.getSharedPreferences("com.leanbitlab.lwidget.PREFS", Context.MODE_PRIVATE)
@@ -159,7 +159,7 @@ class AwidgetProvider : AppWidgetProvider() {
159159
context,
160160
500,
161161
intent,
162-
android.app.PendingIntent.FLAG_UPDATE_CURRENT or android.app.PendingIntent.FLAG_IMMUTABLE
162+
android.app.PendingIntent.FLAG_IMMUTABLE
163163
)
164164
alarmManager.cancel(pendingIntent)
165165
}
@@ -649,7 +649,7 @@ class AwidgetProvider : AppWidgetProvider() {
649649
if (launchIntent != null) {
650650
val pendingIntent = android.app.PendingIntent.getActivity(
651651
context, 0, launchIntent,
652-
android.app.PendingIntent.FLAG_UPDATE_CURRENT or android.app.PendingIntent.FLAG_IMMUTABLE
652+
android.app.PendingIntent.FLAG_IMMUTABLE
653653
)
654654
views.setOnClickPendingIntent(R.id.text_weather_condition, pendingIntent)
655655
}
@@ -774,7 +774,7 @@ class AwidgetProvider : AppWidgetProvider() {
774774
// --- Click Actions ---
775775
val clockPackages = listOf("com.android.deskclock", "com.google.android.deskclock", "com.simplemobiletools.clock", "org.fossify.clock")
776776
val alarmIntent = getBestIntent(context, clockPackages, Intent(android.provider.AlarmClock.ACTION_SHOW_ALARMS))
777-
val alarmPendingIntent = PendingIntent.getActivity(context, 0, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
777+
val alarmPendingIntent = PendingIntent.getActivity(context, 0, alarmIntent, PendingIntent.FLAG_IMMUTABLE)
778778
views.setOnClickPendingIntent(R.id.clock_time, alarmPendingIntent)
779779

780780
val calendarPackages = listOf("org.fossify.calendar", "com.simplemobiletools.calendar", "com.google.android.calendar", "com.android.calendar")
@@ -783,20 +783,20 @@ class AwidgetProvider : AppWidgetProvider() {
783783
flags = Intent.FLAG_ACTIVITY_NEW_TASK
784784
}
785785
val calendarIntent = getBestIntent(context, calendarPackages, baseCalIntent)
786-
val calendarPendingIntent = PendingIntent.getActivity(context, 1, calendarIntent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
786+
val calendarPendingIntent = PendingIntent.getActivity(context, 1, calendarIntent, PendingIntent.FLAG_IMMUTABLE)
787787
views.setOnClickPendingIntent(R.id.clock_date, calendarPendingIntent)
788788

789789
val batteryIntent = Intent(Intent.ACTION_POWER_USAGE_SUMMARY)
790-
val batteryPendingIntent = PendingIntent.getActivity(context, 2, batteryIntent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
790+
val batteryPendingIntent = PendingIntent.getActivity(context, 2, batteryIntent, PendingIntent.FLAG_IMMUTABLE)
791791
views.setOnClickPendingIntent(R.id.text_battery, batteryPendingIntent)
792792
views.setOnClickPendingIntent(R.id.text_temp, batteryPendingIntent)
793793

794794
val storageIntent = Intent(android.provider.Settings.ACTION_INTERNAL_STORAGE_SETTINGS)
795-
val storagePendingIntent = PendingIntent.getActivity(context, 3, storageIntent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
795+
val storagePendingIntent = PendingIntent.getActivity(context, 3, storageIntent, PendingIntent.FLAG_IMMUTABLE)
796796
views.setOnClickPendingIntent(R.id.text_storage, storagePendingIntent)
797797

798798
val dataIntent = Intent(android.provider.Settings.ACTION_DATA_USAGE_SETTINGS)
799-
val dataPendingIntent = PendingIntent.getActivity(context, 4, dataIntent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
799+
val dataPendingIntent = PendingIntent.getActivity(context, 4, dataIntent, PendingIntent.FLAG_IMMUTABLE)
800800
views.setOnClickPendingIntent(R.id.text_data_usage, dataPendingIntent)
801801

802802
// --- Calendar Events OR Tasks ---
@@ -819,12 +819,12 @@ class AwidgetProvider : AppWidgetProvider() {
819819
val refreshIntent = Intent(context, AwidgetProvider::class.java).apply {
820820
action = ACTION_BATTERY_UPDATE
821821
}
822-
val refreshPendingIntent = PendingIntent.getBroadcast(context, 10, refreshIntent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
822+
val refreshPendingIntent = PendingIntent.getBroadcast(context, 10, refreshIntent, PendingIntent.FLAG_IMMUTABLE)
823823

824824
if (showTasks) {
825825
val tasksIntent = context.packageManager.getLaunchIntentForPackage("org.tasks")
826826
if (tasksIntent != null) {
827-
val tasksPendingIntent = PendingIntent.getActivity(context, 11, tasksIntent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
827+
val tasksPendingIntent = PendingIntent.getActivity(context, 11, tasksIntent, PendingIntent.FLAG_IMMUTABLE)
828828
views.setOnClickPendingIntent(R.id.events_container, tasksPendingIntent)
829829
} else {
830830
views.setOnClickPendingIntent(R.id.events_container, refreshPendingIntent)
@@ -834,7 +834,7 @@ class AwidgetProvider : AppWidgetProvider() {
834834
}
835835

836836
val settingsIntent = Intent(context, MainActivity::class.java)
837-
val settingsPendingIntent = PendingIntent.getActivity(context, 0, settingsIntent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
837+
val settingsPendingIntent = PendingIntent.getActivity(context, 0, settingsIntent, PendingIntent.FLAG_IMMUTABLE)
838838
views.setOnClickPendingIntent(R.id.widget_root, settingsPendingIntent)
839839

840840
return views
@@ -938,7 +938,7 @@ class AwidgetProvider : AppWidgetProvider() {
938938
views.setTextViewTextSize(eventViews[0], android.util.TypedValue.COMPLEX_UNIT_SP, textSizeSp)
939939
views.setViewVisibility(eventViews[0], android.view.View.VISIBLE)
940940

941-
val emptyIntent = PendingIntent.getActivity(context, 0, Intent(), PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
941+
val emptyIntent = PendingIntent.getActivity(context, 0, Intent(), PendingIntent.FLAG_IMMUTABLE)
942942
views.setOnClickPendingIntent(eventViews[0], emptyIntent)
943943

944944
for (i in 1 until eventViews.size) {
@@ -979,7 +979,7 @@ class AwidgetProvider : AppWidgetProvider() {
979979
data = android.content.ContentUris.withAppendedId(android.provider.CalendarContract.Events.CONTENT_URI, event.id)
980980
flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP
981981
}
982-
val eventPendingIntent = PendingIntent.getActivity(context, event.id.toInt(), eventIntent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
982+
val eventPendingIntent = PendingIntent.getActivity(context, event.id.toInt(), eventIntent, PendingIntent.FLAG_IMMUTABLE)
983983
views.setOnClickPendingIntent(eventViews[i], eventPendingIntent)
984984
} else {
985985
views.setViewVisibility(eventViews[i], android.view.View.GONE)
@@ -1207,7 +1207,7 @@ class AwidgetProvider : AppWidgetProvider() {
12071207

12081208
val taskIntent = context.packageManager.getLaunchIntentForPackage("org.tasks")
12091209
if (taskIntent != null) {
1210-
val taskPendingIntent = PendingIntent.getActivity(context, 1000 + i, taskIntent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
1210+
val taskPendingIntent = PendingIntent.getActivity(context, 1000 + i, taskIntent, PendingIntent.FLAG_IMMUTABLE)
12111211
views.setOnClickPendingIntent(eventViews[i], taskPendingIntent)
12121212
}
12131213
}

0 commit comments

Comments
 (0)