From a82365919d8a02975ce00023c80d7bd078e7cc86 Mon Sep 17 00:00:00 2001 From: will Date: Fri, 3 Feb 2006 15:25:52 +0000 Subject: Make UDF endian-safe. Submitted by: Pedro Martelletto (via scottl) Tested on: sparc64 --- sys/fs/udf/ecma167-udf.h | 2 +- sys/fs/udf/udf_vfsops.c | 2 +- sys/fs/udf/udf_vnops.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) (limited to 'sys/fs') diff --git a/sys/fs/udf/ecma167-udf.h b/sys/fs/udf/ecma167-udf.h index bd78da4..6c7f943 100644 --- a/sys/fs/udf/ecma167-udf.h +++ b/sys/fs/udf/ecma167-udf.h @@ -370,4 +370,4 @@ union dscrptr { #define GETICB(ad_type, fentry, offset) \ (struct ad_type *)&fentry->data[offset] -#define GETICBLEN(ad_type, icb) ((struct ad_type *)(icb))->len +#define GETICBLEN(ad_type, icb) le32toh(((struct ad_type *)(icb))->len) diff --git a/sys/fs/udf/udf_vfsops.c b/sys/fs/udf/udf_vfsops.c index 5609d16..da3de98 100644 --- a/sys/fs/udf/udf_vfsops.c +++ b/sys/fs/udf/udf_vfsops.c @@ -293,7 +293,7 @@ udf_checktag(struct desc_tag *tag, uint16_t id) itag = (uint8_t *)tag; - if (tag->id != id) + if (le16toh(tag->id) != id) return (EINVAL); for (i = 0; i < 15; i++) diff --git a/sys/fs/udf/udf_vnops.c b/sys/fs/udf/udf_vnops.c index 0bb91ec..07bd561 100644 --- a/sys/fs/udf/udf_vnops.c +++ b/sys/fs/udf/udf_vnops.c @@ -1090,7 +1090,7 @@ udf_bmap_internal(struct udf_node *node, off_t offset, daddr_t *sector, } while(offset >= icblen); lsector = (offset >> udfmp->bshift) + - ((struct short_ad *)(icb))->pos; + le32toh(((struct short_ad *)(icb))->pos); *max_size = GETICBLEN(short_ad, icb); -- cgit v1.1