diff options
| author | Lena <lena@omega> | 2026-08-01 00:00:00 +0000 |
|---|---|---|
| committer | Lena <lena@omega> | 2026-08-01 00:00:00 +0000 |
| commit | 852a8a00273c9128efeed0217a8e5d3fcd8bf780 (patch) | |
| tree | c72f959731fa3c7c809cf1a0222363b6c9c9b03b /app/src/main/java/invalid/lena/scrcpy/ControlStream.java | |
| parent | f379b93d52bf0dbd3816ec3f64d165314771d2a6 (diff) | |
| download | scrcpy-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.java | 11 |
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; |