mirror of
https://github.com/oxen-io/session-android.git
synced 2024-11-28 04:25:18 +00:00
Guard against OOB moves in media send flow.
This commit is contained in:
parent
8a7cac7c03
commit
6e7fab40ac
@ -13,6 +13,7 @@ import android.text.TextUtils;
|
|||||||
import com.annimon.stream.Stream;
|
import com.annimon.stream.Stream;
|
||||||
|
|
||||||
import org.thoughtcrime.securesms.TransportOption;
|
import org.thoughtcrime.securesms.TransportOption;
|
||||||
|
import org.thoughtcrime.securesms.logging.Log;
|
||||||
import org.thoughtcrime.securesms.mms.MediaConstraints;
|
import org.thoughtcrime.securesms.mms.MediaConstraints;
|
||||||
import org.thoughtcrime.securesms.providers.BlobProvider;
|
import org.thoughtcrime.securesms.providers.BlobProvider;
|
||||||
import org.thoughtcrime.securesms.util.MediaUtil;
|
import org.thoughtcrime.securesms.util.MediaUtil;
|
||||||
@ -31,6 +32,8 @@ import java.util.Map;
|
|||||||
*/
|
*/
|
||||||
class MediaSendViewModel extends ViewModel {
|
class MediaSendViewModel extends ViewModel {
|
||||||
|
|
||||||
|
private static final String TAG = MediaSendViewModel.class.getSimpleName();
|
||||||
|
|
||||||
private static final int MAX_PUSH = 32;
|
private static final int MAX_PUSH = 32;
|
||||||
private static final int MAX_SMS = 1;
|
private static final int MAX_SMS = 1;
|
||||||
|
|
||||||
@ -176,10 +179,20 @@ class MediaSendViewModel extends ViewModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void onPageChanged(int position) {
|
void onPageChanged(int position) {
|
||||||
|
if (position < 0 || position >= getSelectedMediaOrDefault().size()) {
|
||||||
|
Log.w(TAG, "Tried to move to an out-of-bounds item. Size: " + getSelectedMediaOrDefault().size() + ", position: " + position);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
this.position.setValue(position);
|
this.position.setValue(position);
|
||||||
}
|
}
|
||||||
|
|
||||||
void onMediaItemRemoved(@NonNull Context context, int position) {
|
void onMediaItemRemoved(@NonNull Context context, int position) {
|
||||||
|
if (position < 0 || position >= getSelectedMediaOrDefault().size()) {
|
||||||
|
Log.w(TAG, "Tried to remove an out-of-bounds item. Size: " + getSelectedMediaOrDefault().size() + ", position: " + position);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Media removed = getSelectedMediaOrDefault().remove(position);
|
Media removed = getSelectedMediaOrDefault().remove(position);
|
||||||
|
|
||||||
if (removed != null && BlobProvider.isAuthority(removed.getUri())) {
|
if (removed != null && BlobProvider.isAuthority(removed.getUri())) {
|
||||||
|
Loading…
Reference in New Issue
Block a user