aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/invalid/lena/scrcpy/ControlStream.java
diff options
context:
space:
mode:
authorLena <lena@omega>2026-08-01 00:00:00 +0000
committerLena <lena@omega>2026-08-01 00:00:00 +0000
commit852a8a00273c9128efeed0217a8e5d3fcd8bf780 (patch)
treec72f959731fa3c7c809cf1a0222363b6c9c9b03b /app/src/main/java/invalid/lena/scrcpy/ControlStream.java
parentf379b93d52bf0dbd3816ec3f64d165314771d2a6 (diff)
downloadscrcpy-android-852a8a00273c9128efeed0217a8e5d3fcd8bf780.tar.gz
app: harden mirroring lifecycle and state
Diffstat (limited to 'app/src/main/java/invalid/lena/scrcpy/ControlStream.java')
-rw-r--r--app/src/main/java/invalid/lena/scrcpy/ControlStream.java11
1 files changed, 4 insertions, 7 deletions
diff --git a/app/src/main/java/invalid/lena/scrcpy/ControlStream.java b/app/src/main/java/invalid/lena/scrcpy/ControlStream.java
index a231b92..2ea2883 100644
--- a/app/src/main/java/invalid/lena/scrcpy/ControlStream.java
+++ b/app/src/main/java/invalid/lena/scrcpy/ControlStream.java
@@ -3,7 +3,7 @@ package invalid.lena.scrcpy;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
-import java.nio.charset.StandardCharsets;
+import java.util.Objects;
import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -46,10 +46,6 @@ public final class ControlStream {
private Thread reader;
private volatile boolean stop;
- public ControlStream(InputStream in, OutputStream out) {
- this(in, out, null);
- }
-
public ControlStream(InputStream in, OutputStream out, Runnable onFatalError) {
this.in = in;
this.out = out;
@@ -77,6 +73,7 @@ public final class ControlStream {
}
public void send(byte[] msg) {
+ Objects.requireNonNull(msg);
if (stop) return;
if (outbox.offerLast(msg)) return;
@@ -135,12 +132,12 @@ public final class ControlStream {
case DEV_TYPE_CLIPBOARD: {
Wire.readFully(in, tmp, 0, 4);
int len = Wire.readBe32(tmp, 0);
- if (len < 0 || len > 1 << 20) {
+ if (len < 0 || len > ControlMessages.MAX_DEVICE_CLIPBOARD_BYTES) {
throw new IOException("clipboard len out of range: " + len);
}
byte[] data = new byte[len];
Wire.readFully(in, data);
- String text = new String(data, StandardCharsets.UTF_8);
+ String text = Wire.decodeUtf8(data);
InboundSink s = sink;
if (s != null) s.onRemoteClipboard(text);
break;