From b76172f97ae86d8c687a0345bc664ef5fac64c48 Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Thu, 1 Jul 2021 18:44:57 +0200 Subject: [PATCH] Fix SOP armor command --- .../java/org/pgpainless/sop/commands/Armor.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/pgpainless-sop/src/main/java/org/pgpainless/sop/commands/Armor.java b/pgpainless-sop/src/main/java/org/pgpainless/sop/commands/Armor.java index 65efafae..a70556ef 100644 --- a/pgpainless-sop/src/main/java/org/pgpainless/sop/commands/Armor.java +++ b/pgpainless-sop/src/main/java/org/pgpainless/sop/commands/Armor.java @@ -51,12 +51,17 @@ public class Armor implements Runnable { @Override public void run() { - try (PushbackInputStream pbIn = new PushbackInputStream(System.in); + try (PushbackInputStream pbIn = new PushbackInputStream(System.in, BEGIN_ARMOR.length); ArmoredOutputStream armoredOutputStream = ArmoredOutputStreamFactory.get(System.out)) { - byte[] start = new byte[14]; - int read = pbIn.read(start); - pbIn.unread(read); - if (Arrays.equals(BEGIN_ARMOR, start) && !allowNested) { + + // take a peek + byte[] firstBytes = new byte[BEGIN_ARMOR.length]; + int readByteCount = pbIn.read(firstBytes); + if (readByteCount != -1) { + pbIn.unread(firstBytes, 0, readByteCount); + } + + if (Arrays.equals(BEGIN_ARMOR, firstBytes) && !allowNested) { Streams.pipeAll(pbIn, System.out); } else { Streams.pipeAll(pbIn, armoredOutputStream);