Index: mount/usr/src/cmd/fs.d/udfs/fstyp/ud_lib.c =================================================================== --- mount.orig/usr/src/cmd/fs.d/udfs/fstyp/ud_lib.c 2012-10-08 00:25:23.000000000 +0000 +++ mount/usr/src/cmd/fs.d/udfs/fstyp/ud_lib.c 2013-01-26 01:44:20.914424396 +0000 @@ -27,6 +27,7 @@ #include #include +#include #include #include #include @@ -589,8 +590,7 @@ (SWAP_32(lvd->lvd_vdsn) > v->lvd_vdsn)) { v->lvd_vdsn = SWAP_32(lvd->lvd_vdsn); v->lvd_loc = vds_loc; - v->lvd_len = ((uint32_t) - &((struct log_vol_desc *)0)->lvd_pmaps); + v->lvd_len = offsetof(struct log_vol_desc, lvd_pmaps); v->lvd_len = lb_roundup(v->lvd_len, h->udfs.lbsize); } @@ -603,10 +603,8 @@ /* LINTED */ usd = (struct unall_spc_desc *)taddr; v->usd_loc = vds_loc; - v->usd_len = ((uint32_t) - &((unall_spc_desc_t *)0)->ua_al_dsc) + - SWAP_32(usd->ua_nad) * - sizeof (struct extent_ad); + v->usd_len = offsetof(unall_spc_desc_t, ua_al_dsc) + + SWAP_32(usd->ua_nad) * sizeof (struct extent_ad); v->usd_len = lb_roundup(v->usd_len, h->udfs.lbsize); break; case UD_TERM_DESC : @@ -809,8 +807,7 @@ /* LINTED */ lvid = (struct log_vol_int_desc *)taddr; h->udfs.lvid_loc = lvds_loc; - h->udfs.lvid_len = ((uint32_t) - &((struct log_vol_int_desc *)0)->lvid_fst) + + h->udfs.lvid_len = offsetof(struct log_vol_int_desc, lvid_fst) + SWAP_32(lvid->lvid_npart) * 8 + SWAP_32(lvid->lvid_liu); h->udfs.lvid_len = lb_roundup(h->udfs.lvid_len, @@ -1231,7 +1228,7 @@ dot_loc = j; } if ((unicode[i] == SLASH) || - (unicode[i] == NULL)) { + (unicode[i] == 0)) { if (make_crc == 0) { for (k = 0; k <= i; k++) { crc += unicode[k];