aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/invalid/lena/scrcpy/ControlMessages.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/invalid/lena/scrcpy/ControlMessages.java')
-rw-r--r--app/src/main/java/invalid/lena/scrcpy/ControlMessages.java8
1 files changed, 8 insertions, 0 deletions
diff --git a/app/src/main/java/invalid/lena/scrcpy/ControlMessages.java b/app/src/main/java/invalid/lena/scrcpy/ControlMessages.java
index bd983ed..aba2ca8 100644
--- a/app/src/main/java/invalid/lena/scrcpy/ControlMessages.java
+++ b/app/src/main/java/invalid/lena/scrcpy/ControlMessages.java
@@ -8,6 +8,8 @@ import java.nio.charset.StandardCharsets;
// unit-tested without android.* on the classpath.
public final class ControlMessages {
+ static final int MAX_CLIPBOARD_BYTES = 1 << 20;
+
public static final int TYPE_INJECT_KEYCODE = 0;
public static final int TYPE_INJECT_TEXT = 1;
public static final int TYPE_INJECT_TOUCH_EVENT = 2;
@@ -60,7 +62,13 @@ public final class ControlMessages {
}
public static byte[] setClipboard(long sequence, boolean paste, String text) {
+ if (text.length() > MAX_CLIPBOARD_BYTES) {
+ throw new IllegalArgumentException("clipboard text is too large");
+ }
byte[] data = text.getBytes(StandardCharsets.UTF_8);
+ if (data.length > MAX_CLIPBOARD_BYTES) {
+ throw new IllegalArgumentException("clipboard UTF-8 data is too large");
+ }
byte[] m = new byte[1 + 8 + 1 + 4 + data.length];
m[0] = TYPE_SET_CLIPBOARD;
Wire.writeBe64(m, 1, sequence);