Fix tools/bmp_logo.c using incorrect offset to pixel data
Patch by Andrew Dyer, 31 Jan 2005
diff --git a/CHANGELOG b/CHANGELOG
index d0bef30..7e46ca8 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2,6 +2,9 @@
 Changes for U-Boot 1.1.4:
 ======================================================================
 
+* Fix tools/bmp_logo.c using incorrect offset to pixel data
+  Patch by Andrew Dyer, 31 Jan 2005
+
 * Add ARM946E cpu and core module targets; remap memory to 0x00000000
   Patch by Peter Pearse, 2 Feb 2005
 
diff --git a/tools/bmp_logo.c b/tools/bmp_logo.c
index 8e728e2..98be617 100644
--- a/tools/bmp_logo.c
+++ b/tools/bmp_logo.c
@@ -46,7 +46,7 @@
 	FILE	*fp;
 	bitmap_t bmp;
 	bitmap_t *b = &bmp;
-	uint16_t n_colors;
+	uint16_t data_offset, n_colors;
 
 	if (argc < 2) {
 		fprintf (stderr, "Usage: %s file\n", argv[0]);
@@ -67,7 +67,9 @@
 	 * read width and height of the image, and the number of colors used;
 	 * ignore the rest
 	 */
-	skip_bytes (fp, 16);
+	skip_bytes (fp, 8);
+	fread (&data_offset, sizeof (uint16_t), 1, fp);
+	skip_bytes (fp, 6);
 	fread (&b->width,   sizeof (uint16_t), 1, fp);
 	skip_bytes (fp, 2);
 	fread (&b->height,  sizeof (uint16_t), 1, fp);
@@ -78,6 +80,7 @@
 	/*
 	 * Repair endianess.
 	 */
+	data_offset = le_short(data_offset);
 	b->width = le_short(b->width);
 	b->height = le_short(b->height);
 	n_colors = le_short(n_colors);
@@ -129,6 +132,9 @@
 		);
 	}
 
+	/* seek to offset indicated by file header */
+	fseek(fp, (long)data_offset, SEEK_SET);
+
 	/* read the bitmap; leave room for default color map */
 	printf ("\n");
 	printf ("};\n");