mirror of
https://gitlab.com/qemu-project/openbios.git
synced 2024-02-13 08:34:06 +08:00
Fix endianess bug in Rock Ridge extensions
git-svn-id: svn://coreboot.org/openbios/openbios-devel@450 f158a5a8-5612-0410-a976-696ce0be7e32
This commit is contained in:
@@ -192,16 +192,16 @@ iso9660_dir (char *dirname)
|
||||
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 @@ iso9660_dir (char *dirname)
|
||||
? 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)
|
||||
|
||||
@@ -157,10 +157,9 @@ typedef union RR_ptr {
|
||||
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) && \
|
||||
|
||||
Reference in New Issue
Block a user