#843: Correctly handle empty image resources section.

This commit is contained in:
Harald Kuhr 2023-10-20 12:26:36 +02:00
parent 4d3f691e6a
commit 9720a931c5

View File

@ -864,21 +864,27 @@ public final class PSDImageReader extends ImageReaderBase {
long imageResourcesLength = imageInput.readUnsignedInt(); long imageResourcesLength = imageInput.readUnsignedInt();
if (pParseData && metadata.imageResources == null && imageResourcesLength > 0) { if (pParseData && metadata.imageResources == null) {
long expectedEnd = imageInput.getStreamPosition() + imageResourcesLength; if (imageResourcesLength == 0) {
metadata.imageResources = new ArrayList<>(); metadata.imageResources = Collections.emptyList();
while (imageInput.getStreamPosition() < expectedEnd) {
PSDImageResource resource = PSDImageResource.read(imageInput);
metadata.imageResources.add(resource);
} }
else {
metadata.imageResources = new ArrayList<>();
if (DEBUG) { long expectedEnd = imageInput.getStreamPosition() + imageResourcesLength;
System.out.println("imageResources: " + metadata.imageResources);
}
if (imageInput.getStreamPosition() != expectedEnd) { while (imageInput.getStreamPosition() < expectedEnd) {
throw new IIOException("Corrupt PSD document"); // ..or maybe just a bug in the reader.. ;-) PSDImageResource resource = PSDImageResource.read(imageInput);
metadata.imageResources.add(resource);
}
if (DEBUG) {
System.out.println("imageResources: " + metadata.imageResources);
}
if (imageInput.getStreamPosition() != expectedEnd) {
throw new IIOException("Corrupt PSD document"); // ..or maybe just a bug in the reader.. ;-)
}
} }
} }