summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfwarmerdam <fwarmerdam>2012-06-08 05:15:21 +0000
committerfwarmerdam <fwarmerdam>2012-06-08 05:15:21 +0000
commitdc530f6b984da44ec6c54975c7f06a949f088482 (patch)
tree5143d5a7b9daef609fe9b24e44358d4d3be0602e
parent2455a7830b307b333e1a061c8c2dbbcb31b88dc1 (diff)
downloadlibtiff-dc530f6b984da44ec6c54975c7f06a949f088482.tar.gz
avoid pretty printing values without proper rawdata
-rw-r--r--ChangeLog6
-rw-r--r--libtiff/tif_print.c46
2 files changed, 39 insertions, 13 deletions
diff --git a/ChangeLog b/ChangeLog
index 368bb794..8f3ad8cd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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;