From f56025e76229d00b227203f966167af23fe4e9ff Mon Sep 17 00:00:00 2001 From: jmesterh Date: Mon, 9 Mar 2026 13:40:21 -0700 Subject: [PATCH] When decompressing encapsulated images where pixel data is the last element, the post-pixels loop wrote a stale SeqDelimitationItem (fffe,e0dd) left over from the encapsulated pixel-skip logic. Restructured the loop to match the other DICOM processors and filter out FFFE-group delimiter tags. --- .../anonymizer/dicom/DICOMDecompressor.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/source/java/org/rsna/ctp/stdstages/anonymizer/dicom/DICOMDecompressor.java b/source/java/org/rsna/ctp/stdstages/anonymizer/dicom/DICOMDecompressor.java index f43341f..49b54a0 100644 --- a/source/java/org/rsna/ctp/stdstages/anonymizer/dicom/DICOMDecompressor.java +++ b/source/java/org/rsna/ctp/stdstages/anonymizer/dicom/DICOMDecompressor.java @@ -287,15 +287,15 @@ else if (b.getDataType() == DataBuffer.TYPE_INT) { //Now do any elements after the pixels one at a time. //This is done to allow streaming of large raw data elements //that occur above Tags.PixelData. - while (!parser.hasSeenEOF() -// && (parser.getStreamPosition() < fileLength) - && parser.getReadTag() != -1) { - dataset.writeHeader( - out, - encoding, - parser.getReadTag(), - parser.getReadVR(), - parser.getReadLength()); + int tag; + while (!parser.hasSeenEOF() +// && (parser.getStreamPosition() < fileLength) + && ((tag=parser.getReadTag()) != -1) + && ((tag >>> 16) != 0xFFFE) + && (tag != 0xFFFAFFFA) + && (tag != 0xFFFCFFFC)) { + logger.debug("About to write post-pixels element "+Integer.toHexString(tag)); + dataset.writeHeader(out, encoding, parser.getReadTag(), parser.getReadVR(), parser.getReadLength()); writeValueTo(parser, buffer, out, swap); parser.parseHeader(); }