X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/8f6c56a50524aa785f7e596d52dddfb331e18961..89b3af67bb32e691275bf6fa803d1834b2284115:/bsd/isofs/cd9660/cd9660_util.c diff --git a/bsd/isofs/cd9660/cd9660_util.c b/bsd/isofs/cd9660/cd9660_util.c index 0a3b9315b..6abbc84bf 100644 --- a/bsd/isofs/cd9660/cd9660_util.c +++ b/bsd/isofs/cd9660/cd9660_util.c @@ -91,7 +91,6 @@ #include #include #include -#include #include #include @@ -162,6 +161,10 @@ isofncmp(u_char *fn, int fnlen, u_char *isofn, int isolen) /* * translate and compare a UCS-2 filename * Note: Version number plus ';' may be omitted. + * + * The name pointed to by "fn" is the search name, whose characters are + * in native endian order. The name "ucsfn" is the on-disk name, whose + * characters are in big endian order. */ int @@ -177,7 +180,7 @@ ucsfncmp(u_int16_t *fn, int fnlen, u_int16_t *ucsfn, int ucslen) while (--fnlen >= 0) { if (--ucslen < 0) return *fn; - if ((c = *ucsfn++) == UCS_SEPARATOR2) { + if ((c = OSSwapBigToHostInt16(*ucsfn++)) == UCS_SEPARATOR2) { switch (*fn++) { default: return *--fn; @@ -191,7 +194,7 @@ ucsfncmp(u_int16_t *fn, int fnlen, u_int16_t *ucsfn, int ucslen) return -1; } } - for (j = 0; --ucslen >= 0; j = j * 10 + *ucsfn++ - '0'); + for (j = 0; --ucslen >= 0; j = j * 10 + OSSwapBigToHostInt16(*ucsfn++) - '0'); return i - j; } if (c != *fn) @@ -202,10 +205,10 @@ ucsfncmp(u_int16_t *fn, int fnlen, u_int16_t *ucsfn, int ucslen) switch (*ucsfn) { default: return -1; - case UCS_SEPARATOR1: - if (ucsfn[1] != UCS_SEPARATOR2) + case OSSwapHostToBigConstInt16(UCS_SEPARATOR1): + if (ucsfn[1] != OSSwapHostToBigConstInt16(UCS_SEPARATOR2)) return -1; - case UCS_SEPARATOR2: + case OSSwapHostToBigConstInt16(UCS_SEPARATOR2): return 0; } } @@ -292,9 +295,9 @@ ucsfntrans(u_int16_t *infn, int infnlen, u_char *outfn, u_short *outfnlen, /* strip file version number */ for (fnidx--; fnidx > 0; fnidx--) { /* stop when ';' is found */ - if (infn[fnidx] == UCS_SEPARATOR2) { + if (infn[fnidx] == OSSwapHostToBigConstInt16(UCS_SEPARATOR2)) { /* drop dangling dot */ - if (fnidx > 0 && infn[fnidx-1] == UCS_SEPARATOR1) + if (fnidx > 0 && infn[fnidx-1] == OSSwapHostToBigConstInt16(UCS_SEPARATOR1)) fnidx--; break; }