diff options
author | ralph isenmann | 2020-12-09 13:20:35 +0100 |
---|---|---|
committer | ralph isenmann | 2020-12-09 13:20:35 +0100 |
commit | 9e9890986723b779aa44c0c01c6e088b841386eb (patch) | |
tree | 05c0d30ded9a8b2ca7a78774f6425c5568887136 | |
parent | [client] fix eol separator (diff) | |
download | tutor-module-9e9890986723b779aa44c0c01c6e088b841386eb.tar.gz tutor-module-9e9890986723b779aa44c0c01c6e088b841386eb.tar.xz tutor-module-9e9890986723b779aa44c0c01c6e088b841386eb.zip |
[client] Fix reading from downloaded tar.gz file
-TarInputStream.read(..) does not read the whole.
-rw-r--r-- | dozentenmodul/src/main/java/org/openslx/dozmod/model/ContainerDefinition.java | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/model/ContainerDefinition.java b/dozentenmodul/src/main/java/org/openslx/dozmod/model/ContainerDefinition.java index 92ec6607..1f28ce06 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/model/ContainerDefinition.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/model/ContainerDefinition.java @@ -100,14 +100,19 @@ public class ContainerDefinition { TarEntry entry; while ((entry = tis.getNextEntry()) != null) { - int size = (int) entry.getSize(); - byte[] rawData = new byte[size]; - tis.read(rawData, 0, size); + byte[] rawData = new byte[1024]; + ByteArrayOutputStream output = new ByteArrayOutputStream(); + int count; + + // read everything from the TarInputStream for the current Entry + while ((count = tis.read(rawData)) != -1) { + output.write(rawData, 0, count); + } if (entry.getName().equals(CONTAINER_FILE)) - containerDef.setContainerRecipe(rawData); + containerDef.setContainerRecipe(output.toByteArray()); if (entry.getName().equals(CONTAINER_META_FILE)) - containerDef.setContainerMeta(rawData); + containerDef.setContainerMeta(output.toByteArray()); } } catch (IOException e) { |