diff --git a/dcmdata/libsrc/dcpixseq.cc b/dcmdata/libsrc/dcpixseq.cc index 7d81fb680..659a2fe9d 100644 --- a/dcmdata/libsrc/dcpixseq.cc +++ b/dcmdata/libsrc/dcpixseq.cc @@ -216,6 +216,11 @@ OFCondition DcmPixelSequence::makeSubObject(DcmObject *&subObject, l_error = EC_InvalidTag; break; + case EVR_UL: //newTag (0x0000, 0x0000) has VR:UL + if (newTag == DCM_GenericGroupLength) + l_error = EC_ItemEnd; + break; + default: newObject = new DcmPixelItem(newTag, newLength); l_error = EC_CorruptedData; diff --git a/dcmdata/libsrc/dcsequen.cc b/dcmdata/libsrc/dcsequen.cc index adeb64539..4df7f7dde 100644 --- a/dcmdata/libsrc/dcsequen.cc +++ b/dcmdata/libsrc/dcsequen.cc @@ -674,6 +674,11 @@ OFCondition DcmSequenceOfItems::readSubItem(DcmInputStream &inStream, << DCM_ItemDelimitationItem << " by sequence delimiter " << DCM_SequenceDelimitationItem << " because it is expected here"); l_error = EC_SequEnd; + } else if (dcmReplaceWrongDelimitationItem.get() && (l_error == EC_CorruptedData)) { + DCMDATA_DEBUG("DcmSequenceOfItems::readSubItem() replacing null bytes " + << DCM_GenericGroupLength << " by sequence delimiter " + << DCM_SequenceDelimitationItem << " because it is expected here"); + l_error = EC_SequEnd; } else { DCMDATA_DEBUG("DcmSequenceOfItems::readSubItem() cannot create Sub Item " << newTag); // treat this incorrect encoding as an error