diff options
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; |