diff options
author | fwarmerdam <fwarmerdam> | 2012-06-08 05:15:21 +0000 |
---|---|---|
committer | fwarmerdam <fwarmerdam> | 2012-06-08 05:15:21 +0000 |
commit | dc530f6b984da44ec6c54975c7f06a949f088482 (patch) | |
tree | 5143d5a7b9daef609fe9b24e44358d4d3be0602e | |
parent | 2455a7830b307b333e1a061c8c2dbbcb31b88dc1 (diff) | |
download | libtiff-dc530f6b984da44ec6c54975c7f06a949f088482.tar.gz |
avoid pretty printing values without proper rawdata
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | libtiff/tif_print.c | 46 |
2 files changed, 39 insertions, 13 deletions
@@ -1,3 +1,9 @@ +2012-06-07 Frank Warmerdam <warmerdam@google.com> + + * libtiff/tif_print.c: avoid pretty printing other fields when + we don't have the proper amount and type of data or if the field + is actually autodefined. + 2012-06-05 Frank Warmerdam <warmerdam@google.com> * libtiff/tif_tile.c, libtiff/tif_strip.c: Ensure that illegal diff --git a/libtiff/tif_print.c b/libtiff/tif_print.c index f5a149e4..d64afe16 100644 --- a/libtiff/tif_print.c +++ b/libtiff/tif_print.c @@ -1,4 +1,4 @@ -/* $Id: tif_print.c,v 1.57 2012-06-06 06:06:20 fwarmerdam Exp $ */ +/* $Id: tif_print.c,v 1.58 2012-06-08 05:15:21 fwarmerdam Exp $ */ /* * Copyright (c) 1988-1997 Sam Leffler @@ -139,22 +139,31 @@ _TIFFPrettyPrintField(TIFF* tif, const TIFFField *fip, FILE* fd, uint32 tag, uint32 value_count, void *raw_data) { (void) tif; + + /* do not try to pretty print auto-defined fields */ + if (strncmp(fip->field_name,"Tag ", 4) == 0) { + return 0; + } switch (tag) { case TIFFTAG_INKSET: - fprintf(fd, " Ink Set: "); - switch (*((uint16*)raw_data)) { + if (value_count == 2 && fip->field_type == TIFF_SHORT) { + fprintf(fd, " Ink Set: "); + switch (*((uint16*)raw_data)) { case INKSET_CMYK: fprintf(fd, "CMYK\n"); break; default: fprintf(fd, "%u (0x%x)\n", - *((uint16*)raw_data), - *((uint16*)raw_data)); + *((uint16*)raw_data), + *((uint16*)raw_data)); break; + } + return 1; } - return 1; + return 0; + case TIFFTAG_DOTRANGE: if (value_count == 2 && fip->field_type == TIFF_SHORT) { fprintf(fd, " Dot Range: %u-%u\n", @@ -162,10 +171,15 @@ _TIFFPrettyPrintField(TIFF* tif, const TIFFField *fip, FILE* fd, uint32 tag, return 1; } return 0; + case TIFFTAG_WHITEPOINT: - fprintf(fd, " White Point: %g-%g\n", - ((float *)raw_data)[0], ((float *)raw_data)[1]); - return 1; + if (value_count == 2 && fip->field_type == TIFF_RATIONAL) { + fprintf(fd, " White Point: %g-%g\n", + ((float *)raw_data)[0], ((float *)raw_data)[1]); + return 1; + } + return 0; + case TIFFTAG_XMLPACKET: { uint32 i; @@ -185,19 +199,25 @@ _TIFFPrettyPrintField(TIFF* tif, const TIFFField *fip, FILE* fd, uint32 tag, " RichTIFFIPTC Data: <present>, %lu bytes\n", (unsigned long) value_count * 4); return 1; + case TIFFTAG_PHOTOSHOP: fprintf(fd, " Photoshop Data: <present>, %lu bytes\n", (unsigned long) value_count); return 1; + case TIFFTAG_ICCPROFILE: fprintf(fd, " ICC Profile: <present>, %lu bytes\n", (unsigned long) value_count); return 1; + case TIFFTAG_STONITS: - fprintf(fd, - " Sample to Nits conversion factor: %.4e\n", - *((double*)raw_data)); - return 1; + if (value_count == 1 && fip->field_type == TIFF_DOUBLE) { + fprintf(fd, + " Sample to Nits conversion factor: %.4e\n", + *((double*)raw_data)); + return 1; + } + return 0; } return 0; |