[OpenBIOS] r450 - openbios-devel/fs/grubfs
svn at openbios.org
svn at openbios.org
Sun Feb 8 16:45:16 CET 2009
Author: blueswirl
Date: 2009-02-08 16:45:15 +0100 (Sun, 08 Feb 2009)
New Revision: 450
Modified:
openbios-devel/fs/grubfs/fsys_iso9660.c
openbios-devel/fs/grubfs/iso9660.h
Log:
Fix endianess bug in Rock Ridge extensions
Modified: openbios-devel/fs/grubfs/fsys_iso9660.c
===================================================================
--- openbios-devel/fs/grubfs/fsys_iso9660.c 2009-02-08 12:22:04 UTC (rev 449)
+++ openbios-devel/fs/grubfs/fsys_iso9660.c 2009-02-08 15:45:15 UTC (rev 450)
@@ -192,16 +192,16 @@
rr_ptr.rr->signature >> 8);
#endif
}
- else if (rr_ptr.rr->signature == RRMAGIC('R', 'R')
+ else if (CHECK2(&rr_ptr.rr->signature, 'R', 'R')
&& rr_ptr.rr->len >= 5)
rr_flag &= rr_ptr.rr->u.rr.flags.ENDIAN;
- else if (rr_ptr.rr->signature == RRMAGIC('N', 'M'))
+ else if (CHECK2(&rr_ptr.rr->signature, 'N', 'M'))
{
name = (char *)rr_ptr.rr->u.nm.name;
name_len = rr_ptr.rr->len - 5;
rr_flag &= ~RR_FLAG_NM;
}
- else if (rr_ptr.rr->signature == RRMAGIC('P', 'X')
+ else if (CHECK2(&rr_ptr.rr->signature, 'P', 'X')
&& rr_ptr.rr->len >= 36)
{
file_type = ((rr_ptr.rr->u.px.mode.ENDIAN & POSIX_S_IFMT)
@@ -212,7 +212,7 @@
? ISO_DIRECTORY : ISO_OTHER));
rr_flag &= ~RR_FLAG_PX;
}
- else if (rr_ptr.rr->signature == RRMAGIC('C', 'E')
+ else if (CHECK2(&rr_ptr.rr->signature, 'C', 'E')
&& rr_ptr.rr->len >= 28)
ce_ptr = rr_ptr.rr;
if (!rr_flag)
Modified: openbios-devel/fs/grubfs/iso9660.h
===================================================================
--- openbios-devel/fs/grubfs/iso9660.h 2009-02-08 12:22:04 UTC (rev 449)
+++ openbios-devel/fs/grubfs/iso9660.h 2009-02-08 15:45:15 UTC (rev 450)
@@ -157,10 +157,9 @@
int i;
} RR_ptr_t;
-#define RRMAGIC(c1, c2) ((c1)|(c2) << 8)
-
-#define CHECK2(ptr, c1, c2) \
- (*(ptr) == (c1) && *(ptr + 1) == (c2))
+#define CHECK2(ptr, c1, c2) \
+ (*(unsigned char *)(ptr) == (c1) && \
+ *((unsigned char *)(ptr) + 1) == (c2))
#define CHECK4(ptr, c1, c2, c3, c4) \
(*(unsigned char *)(ptr) == (c1) && \
*((unsigned char *)(ptr) + 1) == (c2) && \
More information about the OpenBIOS
mailing list