handle invalid image bounds

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/persistance/FileBackend.java   | 8 
src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java | 4 
2 files changed, 8 insertions(+), 4 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/persistance/FileBackend.java 🔗

@@ -888,7 +888,9 @@ public class FileBackend {
 		if (image || video) {
 			try {
 				Dimensions dimensions = image ? getImageDimensions(file) : getVideoDimensions(file);
-				body.append('|').append(dimensions.width).append('|').append(dimensions.height);
+				if (dimensions.valid()) {
+					body.append('|').append(dimensions.width).append('|').append(dimensions.height);
+				}
 			} catch (NotAVideoFile notAVideoFile) {
 				Log.d(Config.LOGTAG, "file with mime type " + file.getMimeType() + " was not a video file");
 				//fall threw
@@ -1015,6 +1017,10 @@ public class FileBackend {
 		public int getMin() {
 			return Math.min(width, height);
 		}
+
+		public boolean valid() {
+			return width > 0 && height > 0;
+		}
 	}
 
 	private static class NotAVideoFile extends Exception {

src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java 🔗

@@ -790,9 +790,7 @@ public class MessageAdapter extends ArrayAdapter<Message> implements CopyTextVie
 			} else {
 				displayInfoMessage(viewHolder, UIHelper.getMessagePreview(activity, message).first, darkBackground);
 			}
-		} else if (message.getType() == Message.TYPE_IMAGE && message.getEncryption() != Message.ENCRYPTION_PGP && message.getEncryption() != Message.ENCRYPTION_DECRYPTION_FAILED) {
-			displayImageMessage(viewHolder, message);
-		} else if (message.getType() == Message.TYPE_FILE && message.getEncryption() != Message.ENCRYPTION_PGP && message.getEncryption() != Message.ENCRYPTION_DECRYPTION_FAILED) {
+		} else if (message.isFileOrImage() && message.getEncryption() != Message.ENCRYPTION_PGP && message.getEncryption() != Message.ENCRYPTION_DECRYPTION_FAILED) {
 			if (message.getFileParams().width > 0 && message.getFileParams().height > 0) {
 				displayImageMessage(viewHolder, message);
 			} else if (message.getFileParams().runtime > 0) {