diff options
author | Simon Rettberg | 2022-02-14 12:22:48 +0100 |
---|---|---|
committer | Simon Rettberg | 2022-02-14 12:22:48 +0100 |
commit | 8d48e0ec97122d72a5ab224c535e51de6a2bef77 (patch) | |
tree | 6d4a40fb8eb9e2e1bb84ec69c64bf8db13c13f17 /src/main/java/org/openslx/virtualization/disk/DiskImageVdi.java | |
parent | Force Unix line endings for Libvirt XML files (even on Windows platforms) (diff) | |
download | master-sync-shared-8d48e0ec97122d72a5ab224c535e51de6a2bef77.tar.gz master-sync-shared-8d48e0ec97122d72a5ab224c535e51de6a2bef77.tar.xz master-sync-shared-8d48e0ec97122d72a5ab224c535e51de6a2bef77.zip |
Always pass charset in String constructor; don't treat strings as binary safe
Diffstat (limited to 'src/main/java/org/openslx/virtualization/disk/DiskImageVdi.java')
-rw-r--r-- | src/main/java/org/openslx/virtualization/disk/DiskImageVdi.java | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/main/java/org/openslx/virtualization/disk/DiskImageVdi.java b/src/main/java/org/openslx/virtualization/disk/DiskImageVdi.java index c564112..1e5b20b 100644 --- a/src/main/java/org/openslx/virtualization/disk/DiskImageVdi.java +++ b/src/main/java/org/openslx/virtualization/disk/DiskImageVdi.java @@ -1,6 +1,8 @@ package org.openslx.virtualization.disk; import java.io.RandomAccessFile; +import java.nio.charset.StandardCharsets; +import java.util.Arrays; import org.openslx.virtualization.Version; @@ -16,6 +18,10 @@ public class DiskImageVdi extends DiskImage * Big endian representation of the little endian VDI magic bytes (signature). */ private static final int VDI_MAGIC = 0x7f10dabe; + /** + * Just 16 null-bytes + */ + private static final byte[] ZERO_UUID = new byte[16]; /** * Creates a new VDI disk image from an existing VDI image file. @@ -73,10 +79,9 @@ public class DiskImageVdi extends DiskImage final RandomAccessFile diskFile = this.getDiskImage(); // if parent UUID is set, the VDI file is a snapshot - final String parentUuid = DiskImageUtils.readBytesAsString( diskFile, 440, 16 ); - final String zeroUuid = new String( new byte[ 16 ] ); + byte[] parentUuid = DiskImageUtils.readBytesAsArray( diskFile, 440, 16 ); - return !zeroUuid.equals( parentUuid ); + return !Arrays.equals( ZERO_UUID, parentUuid ); } @Override @@ -94,7 +99,9 @@ public class DiskImageVdi extends DiskImage public String getDescription() throws DiskImageException { final RandomAccessFile diskFile = this.getDiskImage(); - return DiskImageUtils.readBytesAsString( diskFile, 84, 256 ); + byte[] data = DiskImageUtils.readBytesAsArray( diskFile, 84, 256 ); + // This will replace invalid chars. Maybe use CharsetDecoder and fall back to latin1 on error + return new String( data, StandardCharsets.UTF_8 ); } @Override |