mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-02-15 07:28:30 +00:00
Fix invalid attachment data during sms export.
This commit is contained in:
committed by
Greyson Parrelli
parent
c75a9b577d
commit
2b0e9783a7
@@ -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);
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -61,4 +61,9 @@ sealed interface ExportableMessage {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
data class Skip<out ID : Any>(
|
||||
val id: ID,
|
||||
override val exportState: SmsExportState = SmsExportState()
|
||||
) : ExportableMessage
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user