Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/iNPUTmice/Conversations.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Gultsch <daniel@gultsch.de>2022-07-01 16:54:21 +0300
committerDaniel Gultsch <daniel@gultsch.de>2022-07-01 16:54:56 +0300
commitd8fd59394cad303245c781ba6e6ef716c2284737 (patch)
tree9f0eb12b80e097bc70665fe2f4544ff79b9fa905
parent73c7d76bd6f729ac851747f545eca0efe80c3983 (diff)
fix array out of bounds. fixes #4334
-rw-r--r--src/main/java/eu/siacs/conversations/ui/util/EditMessageActionModeCallback.java27
1 files changed, 18 insertions, 9 deletions
diff --git a/src/main/java/eu/siacs/conversations/ui/util/EditMessageActionModeCallback.java b/src/main/java/eu/siacs/conversations/ui/util/EditMessageActionModeCallback.java
index fca8ebbbc..a859e14f8 100644
--- a/src/main/java/eu/siacs/conversations/ui/util/EditMessageActionModeCallback.java
+++ b/src/main/java/eu/siacs/conversations/ui/util/EditMessageActionModeCallback.java
@@ -48,17 +48,28 @@ public class EditMessageActionModeCallback implements ActionMode.Callback {
public EditMessageActionModeCallback(EditMessage editMessage) {
this.editMessage = editMessage;
- this.clipboardManager = (ClipboardManager) editMessage.getContext().getSystemService(Context.CLIPBOARD_SERVICE);
+ this.clipboardManager =
+ (ClipboardManager)
+ editMessage.getContext().getSystemService(Context.CLIPBOARD_SERVICE);
}
@Override
- public boolean onCreateActionMode(ActionMode mode, Menu menu) {
+ public boolean onCreateActionMode(final ActionMode mode, final Menu menu) {
final MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.edit_message_actions, menu);
final MenuItem pasteAsQuote = menu.findItem(R.id.paste_as_quote);
final ClipData primaryClip = clipboardManager.getPrimaryClip();
- if (primaryClip != null && primaryClip.getItemCount() >= 0) {
- pasteAsQuote.setVisible(primaryClip.getDescription().getMimeType(0).startsWith("text/") && !TextUtils.isEmpty(primaryClip.getItemAt(0).getText()));
+ if (primaryClip != null && primaryClip.getItemCount() > 0) {
+ final String mimeType;
+ try {
+ mimeType = primaryClip.getDescription().getMimeType(0);
+ } catch (final Exception e) {
+ pasteAsQuote.setVisible(false);
+ return true;
+ }
+ pasteAsQuote.setVisible(
+ mimeType.startsWith("text/")
+ && !TextUtils.isEmpty(primaryClip.getItemAt(0).getText()));
} else {
pasteAsQuote.setVisible(false);
}
@@ -71,10 +82,10 @@ public class EditMessageActionModeCallback implements ActionMode.Callback {
}
@Override
- public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
+ public boolean onActionItemClicked(final ActionMode mode, final MenuItem item) {
if (item.getItemId() == R.id.paste_as_quote) {
final ClipData primaryClip = clipboardManager.getPrimaryClip();
- if (primaryClip != null && primaryClip.getItemCount() >= 1) {
+ if (primaryClip != null && primaryClip.getItemCount() > 0) {
editMessage.insertAsQuote(primaryClip.getItemAt(0).getText().toString());
return true;
}
@@ -83,7 +94,5 @@ public class EditMessageActionModeCallback implements ActionMode.Callback {
}
@Override
- public void onDestroyActionMode(ActionMode mode) {
-
- }
+ public void onDestroyActionMode(ActionMode mode) {}
}