libtiff: Fixed problem introduced with a fix for a byte swapping issue

From ee52b7714bb635fa907f1bdde57e4917611b14a1 Mon Sep 17 00:00:00 2001
From: Andrey Kiselev <[EMAIL REDACTED]>
Date: Tue, 1 May 2007 15:01:32 +0000
Subject: [PATCH] Fixed problem introduced with a fix for a byte swapping issue
 http://bugzilla.remotesensing.org/show_bug.cgi?id=1363 As per bug
 http://bugzilla.remotesensing.org/show_bug.cgi?id=1550

---
 libtiff/tif_dirwrite.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/libtiff/tif_dirwrite.c b/libtiff/tif_dirwrite.c
index e3b06d2a..27a2056f 100644
--- a/libtiff/tif_dirwrite.c
+++ b/libtiff/tif_dirwrite.c
@@ -1,4 +1,4 @@
-/* $Id: tif_dirwrite.c,v 1.37.2.1 2007-04-06 16:05:15 dron Exp $ */
+/* $Id: tif_dirwrite.c,v 1.37.2.2 2007-05-01 15:01:32 dron Exp $ */
 
 /*
  * Copyright (c) 1988-1997 Sam Leffler
@@ -925,20 +925,20 @@ TIFFWriteByteArray(TIFF* tif, TIFFDirEntry* dir, char* cp)
 	if (dir->tdir_count <= 4) {
 		if (tif->tif_header.tiff_magic == TIFF_BIGENDIAN) {
 			dir->tdir_offset = (uint32)cp[0] << 24;
-			if (dir->tdir_count == 2)
+			if (dir->tdir_count >= 2)
 				dir->tdir_offset |= (uint32)cp[1] << 16;
-			if (dir->tdir_count == 3)
+			if (dir->tdir_count >= 3)
 				dir->tdir_offset |= (uint32)cp[2] << 8;
 			if (dir->tdir_count == 4)
 				dir->tdir_offset |= cp[3];
 		} else {
 			dir->tdir_offset = cp[0];
-			if (dir->tdir_count == 2)
+			if (dir->tdir_count >= 2)
 				dir->tdir_offset |= (uint32) cp[1] << 8;
-			if (dir->tdir_count == 3)
-				dir->tdir_offset |= (uint32) cp[1] << 16;
+			if (dir->tdir_count >= 3)
+				dir->tdir_offset |= (uint32) cp[2] << 16;
 			if (dir->tdir_count == 4)
-				dir->tdir_offset |= (uint32) cp[1] << 24;
+				dir->tdir_offset |= (uint32) cp[3] << 24;
 		}
 		return 1;
 	} else