Skip to content

Commit 14a52d4

Browse files
committed
ScanEncryptorUtils.getDownloadBodyAndEncryptIfNeeded can throw, ensure it will not crash the application.
1 parent 8056285 commit 14a52d4

File tree

2 files changed

+3
-1
lines changed

2 files changed

+3
-1
lines changed

matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/contentscanner/ScanEncryptorUtils.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import org.matrix.rustcomponents.sdk.crypto.PkEncryption
2626

2727
internal object ScanEncryptorUtils {
2828

29+
@Throws
2930
fun getDownloadBodyAndEncryptIfNeeded(publicServerKey: String?, mxcUrl: String, elementToDecrypt: ElementToDecrypt): DownloadBody {
3031
// TODO, upstream refactoring changed the object model here...
3132
// it's bad we have to recreate and use hardcoded values
@@ -43,6 +44,7 @@ internal object ScanEncryptorUtils {
4344
v = "v2"
4445
)
4546
return if (publicServerKey != null) {
47+
// Note: fromBase64 can throw Exception
4648
val pkEncryption = PkEncryption.fromBase64(key = publicServerKey)
4749
val pkMessage = pkEncryption.encrypt(DownloadBody(encryptedInfo).toCanonicalJson())
4850
DownloadBody(

matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/contentscanner/tasks/ScanEncryptedTask.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,12 @@ internal class DefaultScanEncryptedTask @Inject constructor(
4242

4343
override suspend fun execute(params: ScanEncryptedTask.Params): ScanResponse {
4444
val mxcUrl = params.mxcUrl
45-
val dlBody = ScanEncryptorUtils.getDownloadBodyAndEncryptIfNeeded(params.publicServerKey, params.mxcUrl, params.encryptedInfo)
4645

4746
val scannerUrl = contentScannerStore.getScannerUrl()
4847
contentScannerStore.updateStateForContent(params.mxcUrl, ScanState.IN_PROGRESS, scannerUrl)
4948

5049
try {
50+
val dlBody = ScanEncryptorUtils.getDownloadBodyAndEncryptIfNeeded(params.publicServerKey, params.mxcUrl, params.encryptedInfo)
5151
val api = contentScannerApiProvider.contentScannerApi ?: throw IllegalArgumentException()
5252
val executeRequest = executeRequest<ScanResponse>(null) {
5353
api.scanFile(dlBody)

0 commit comments

Comments
 (0)