--- /dev/null
+--- grub-0.95/stage2/graphics.c.xpmjunk 2005-01-04 17:01:35.492804523 -0500
++++ grub-0.95/stage2/graphics.c 2005-01-04 17:02:52.722495885 -0500
+@@ -262,6 +262,35 @@
+ return;
+ }
+
++/* Open the file, and search for a valid XPM header. Return 1 if one is found,
++ * leaving the current position as the start of the next line. Else,
++ * return 0.
++ */
++int xpm_open(const char *s) {
++ char buf, prev, target[]="/* XPM */\n";
++ int pos=0;
++
++ if (!grub_open(s))
++ return 0;
++
++ prev='\n';
++ buf=0;
++ do {
++ if (grub_read(&buf, 1) != 1) {
++ grub_close();
++ return 0;
++ }
++ if ((pos == 0 && prev == '\n') || pos > 0) {
++ if (buf == target[pos])
++ pos++;
++ else
++ pos=0;
++ }
++ prev=buf;
++ } while (target[pos]);
++ return 1;
++}
++
+ /* Read in the splashscreen image and set the palette up appropriately.
+ * Format of splashscreen is an xpm (can be gzipped) with 16 colors and
+ * 640x480. */
+@@ -271,15 +300,9 @@
+ unsigned char c, base, mask, *s1, *s2, *s4, *s8;
+ unsigned i, len, idx, colors, x, y, width, height;
+
+- if (!grub_open(s))
++ if (!xpm_open(s))
+ return 0;
+
+- /* read header */
+- if (!grub_read((char*)&buf, 10) || grub_memcmp(buf, "/* XPM */\n", 10)) {
+- grub_close();
+- return 0;
+- }
+-
+ /* parse info */
+ while (grub_read(&c, 1)) {
+ if (c == '"')