< prev index next >

src/java.desktop/share/classes/com/sun/imageio/plugins/tiff/TIFFIFD.java

Print this page

        

*** 539,564 **** } } } // Stream position initially at beginning, left at end ! // if ignoreUnknownFields is true, do not load fields for which // a tag cannot be found in an allowed TagSet. public void initialize(ImageInputStream stream, boolean isPrimaryIFD, ! boolean ignoreUnknownFields) throws IOException { removeTIFFFields(); long streamLength = stream.length(); boolean haveStreamLength = streamLength != -1; List<TIFFTagSet> tagSetList = getTagSetList(); boolean ensureEssentialTags = false; TIFFTagSet baselineTagSet = null; ! if (isPrimaryIFD && ignoreUnknownFields ! && !tagSetList.contains(BaselineTIFFTagSet.getInstance())) { ensureEssentialTags = true; initializeEssentialTags(); baselineTagSet = BaselineTIFFTagSet.getInstance(); } --- 539,570 ---- } } } // Stream position initially at beginning, left at end ! // if readUnknownTags is false, do not load fields for which // a tag cannot be found in an allowed TagSet. public void initialize(ImageInputStream stream, boolean isPrimaryIFD, ! boolean ignoreMetadata, boolean readUnknownTags) throws IOException { removeTIFFFields(); long streamLength = stream.length(); boolean haveStreamLength = streamLength != -1; List<TIFFTagSet> tagSetList = getTagSetList(); + // Configure essential tag variables if this is the primary IFD and + // either all metadata are being ignored, or metadata are not being + // ignored but both unknown tags are being ignored and the tag set + // list does not contain the baseline tags. boolean ensureEssentialTags = false; TIFFTagSet baselineTagSet = null; ! if (isPrimaryIFD && ! (ignoreMetadata || ! (!readUnknownTags && ! !tagSetList.contains(BaselineTIFFTagSet.getInstance())))) { ensureEssentialTags = true; initializeEssentialTags(); baselineTagSet = BaselineTIFFTagSet.getInstance(); }
*** 588,600 **** if (tag == null && ensureEssentialTags && essentialTags.contains(tagNumber)) { tag = baselineTagSet.getTag(tagNumber); } ! // Ignore unknown fields, fields with unknown type, and fields // with count out of int range. ! if((tag == null && ignoreUnknownFields) || (tag != null && !tag.isDataTypeOK(type)) || longCount > Integer.MAX_VALUE) { // Skip the value/offset so as to leave the stream // position at the start of the next IFD entry. stream.skipBytes(4); --- 594,609 ---- if (tag == null && ensureEssentialTags && essentialTags.contains(tagNumber)) { tag = baselineTagSet.getTag(tagNumber); } ! // Ignore non-essential fields, unknown fields unless forcibly ! // being read, fields with unknown type, and fields // with count out of int range. ! if((ignoreMetadata && ! (!ensureEssentialTags || !essentialTags.contains(tagNumber))) ! || (tag == null && !readUnknownTags) || (tag != null && !tag.isDataTypeOK(type)) || longCount > Integer.MAX_VALUE) { // Skip the value/offset so as to leave the stream // position at the start of the next IFD entry. stream.skipBytes(4);
*** 699,709 **** if (tag.isIFDPointer()) { List<TIFFTagSet> tagSets = new ArrayList<TIFFTagSet>(1); tagSets.add(tag.getTagSet()); TIFFIFD subIFD = new TIFFIFD(tagSets); ! subIFD.initialize(stream, false, ignoreUnknownFields); TIFFField f = new TIFFField(tag, type, e.offset, subIFD); addTIFFField(f); } else { if (tagNumber == BaselineTIFFTagSet.TAG_STRIP_BYTE_COUNTS || tagNumber == BaselineTIFFTagSet.TAG_TILE_BYTE_COUNTS --- 708,719 ---- if (tag.isIFDPointer()) { List<TIFFTagSet> tagSets = new ArrayList<TIFFTagSet>(1); tagSets.add(tag.getTagSet()); TIFFIFD subIFD = new TIFFIFD(tagSets); ! subIFD.initialize(stream, false, ignoreMetadata, ! readUnknownTags); TIFFField f = new TIFFField(tag, type, e.offset, subIFD); addTIFFField(f); } else { if (tagNumber == BaselineTIFFTagSet.TAG_STRIP_BYTE_COUNTS || tagNumber == BaselineTIFFTagSet.TAG_TILE_BYTE_COUNTS
< prev index next >