diff options
Diffstat (limited to 'app/src/main/java/invalid/lena/scrcpy/ControlMessages.java')
| -rw-r--r-- | app/src/main/java/invalid/lena/scrcpy/ControlMessages.java | 8 |
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); |