Fix invalid attachment data during sms export.

main
Cody Henthorne 2023-02-15 15:32:34 -05:00 zatwierdzone przez Greyson Parrelli
rodzic c75a9b577d
commit 2b0e9783a7
5 zmienionych plików z 20 dodań i 0 usunięć

Wyświetl plik

@ -5300,6 +5300,10 @@ public class MessageTable extends DatabaseTable implements MessageTypes, Recipie
}
}
public MessageId getCurrentId() {
return new MessageId(CursorUtil.requireLong(cursor, ID));
}
@Override
public @NonNull MessageExportState getMessageExportStateForCurrentRecord() {
byte[] messageExportState = CursorUtil.requireBlob(cursor, MessageTable.EXPORT_STATE);

Wyświetl plik

@ -1,5 +1,6 @@
package org.thoughtcrime.securesms.exporter
import org.json.JSONException
import org.signal.core.util.logging.Log
import org.signal.smsexporter.ExportableMessage
import org.signal.smsexporter.SmsExportState
@ -92,6 +93,11 @@ class SignalSmsExportReader(
throw NoSuchElementException()
}
} catch (e: Throwable) {
if (e.cause is JSONException) {
Log.w(TAG, "Error processing attachment json, skipping message.", e)
return ExportableMessage.Skip(messageReader!!.currentId)
}
Log.w(TAG, "Error processing message: isMms: ${record?.isMms} type: ${record?.type}")
throw e
}

Wyświetl plik

@ -180,6 +180,7 @@ class SignalSmsExportService : SmsExportService() {
val messageId: Any = when (this) {
is ExportableMessage.Mms<*> -> id
is ExportableMessage.Sms<*> -> id
is ExportableMessage.Skip<*> -> id
}
if (messageId is MessageId) {

Wyświetl plik

@ -61,4 +61,9 @@ sealed interface ExportableMessage {
}
}
}
data class Skip<out ID : Any>(
val id: ID,
override val exportState: SmsExportState = SmsExportState()
) : ExportableMessage
}

Wyświetl plik

@ -80,6 +80,10 @@ abstract class SmsExportService : Service() {
val successful = when (message) {
is ExportableMessage.Sms<*> -> exportSms(exportState, message)
is ExportableMessage.Mms<*> -> exportMms(exportState, message)
is ExportableMessage.Skip<*> -> {
onMessageExportSucceeded(message)
true
}
}
if (!successful) {