From 708e8250f2b98e2e2cd789acb46195bfae7196f7 Mon Sep 17 00:00:00 2001 From: jagadeesh-18-bot Date: Sat, 27 Sep 2025 22:01:13 +0530 Subject: [PATCH] Prevent IndexOutOfBoundsException in setUploadMediaDetails by validating index and list size (#6404) --- .../upload/mediaDetails/UploadMediaPresenter.kt | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaPresenter.kt b/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaPresenter.kt index 4d565adb2..6e26e02a6 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaPresenter.kt +++ b/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaPresenter.kt @@ -69,7 +69,18 @@ class UploadMediaPresenter @Inject constructor( uploadMediaDetails: List, uploadItemIndex: Int ) { - repository.getUploads()[uploadItemIndex].uploadMediaDetails = uploadMediaDetails.toMutableList() + val uploadItems = repository.getUploads() + if (uploadItemIndex >= 0 && uploadItemIndex < uploadItems.size) { + if (uploadMediaDetails.isNotEmpty()) { + uploadItems[uploadItemIndex].uploadMediaDetails = uploadMediaDetails.toMutableList() + Timber.d("Set uploadMediaDetails for index %d, size %d", uploadItemIndex, uploadMediaDetails.size) + } else { + uploadItems[uploadItemIndex].uploadMediaDetails = mutableListOf(UploadMediaDetail()) + Timber.w("Received empty uploadMediaDetails for index %d, initialized default", uploadItemIndex) + } + } else { + Timber.e("Invalid index %d for uploadItems size %d, skipping setUploadMediaDetails", uploadItemIndex, uploadItems.size) + } } override fun setupBasicKvStoreFactory(factory: (String) -> BasicKvStore) {