Validate ringtone URIs before setting

Add checks URIs for content from other users.
 Fail for users that are not profiles of the current user.

Test: atest DefaultRingtonePreferenceTest
Bug: 299614635
Change-Id: Ib266b285a3a1c6c5265ae2321159e61e08e349f6
Merged-In: Ib266b285a3a1c6c5265ae2321159e61e08e349f6
This commit is contained in:
Valentin Iftime
2023-10-03 17:28:34 +02:00
committed by Iavor-Valentin Iftime
parent 7b38ca4ff1
commit 1876c44991
4 changed files with 172 additions and 15 deletions

View File

@@ -25,10 +25,13 @@ import android.net.Uri;
import android.os.AsyncTask;
import android.util.AttributeSet;
import android.util.Log;
import com.android.settings.R;
import com.android.settings.RingtonePreference;
public class NotificationSoundPreference extends RingtonePreference {
private static final String TAG = "NotificationSoundPreference";
private Uri mRingtone;
public NotificationSoundPreference(Context context, AttributeSet attrs) {
@@ -50,8 +53,13 @@ public class NotificationSoundPreference extends RingtonePreference {
public boolean onActivityResult(int requestCode, int resultCode, Intent data) {
if (data != null) {
Uri uri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
setRingtone(uri);
callChangeListener(uri);
if (isValidRingtoneUri(uri)) {
setRingtone(uri);
callChangeListener(uri);
} else {
Log.e(TAG, "onActivityResult for URI:" + uri
+ " ignored: invalid ringtone Uri");
}
}
return true;